2012-06-13 114 views
0

我有多項選擇的NSTableView啓用NSTableView的多重選擇

如果我選擇項目,並滾動列表來回他們記住並顯示和選擇(藍色背景)。 使用didDeselectRowAtIndexPathdidSelectRowAtIndexPath我能夠保留我自己的選定項目的數組。

該部分工作良好。

但是,如果我然後使用sectionForSectionIndexTitle並跳轉到一個字母該選擇似乎被遺忘,即使indexPathForSelectedRows似乎已被重置,現在是空的。

我自己的陣列記得一個項目被選中,我可以設置cell.selected在cellForRowAtIndexPath,但我謹列表中的瞬間再次被遺忘

任何想法,這是一個錯誤或你怎麼留住提前

回答

0

跳到了一封信

由於使用選定的行值的NSMutableArray在選擇列表中,有可能保持在表自己的軌道選定行的。然後調用數組中的最後一個對象-selectRowAtIndexPath:animated來恢復選擇。

至於錯誤:當表跳轉到選定的字母時可能發生什麼,是一個流浪的-reloadData,它會忘記選定的行。

+0

感謝故事行值可能是一個好主意 – NewDev

0

我認爲這是因爲你的細胞被重複使用。不要重複使用這些單元格(您沒有高效地使用單元格)。否則,

您可以將選擇自己存儲在數組中,並稍後用於您的目的。

1

請記住,UITableViewCells僅用於顯示您的數據,並不意味着它們與您的「模型」有一對一的關係,因爲它們在必要時排隊並重用(例如,您可能會顯示數千個項目在tableview中,但只分配了少數的UITableViewCell實例)。

因此,您需要跟蹤可變數組中選定/取消選定的項目,並確保您檢查tableView:cellForRowAtIndexPath:方法中是否存在該項目,然後更新單元格屬性以表示您的數據。

+0

謝謝我只是這樣做,同時上下滾動工作列表 – NewDev