我有一个NSTableView
启用了多个选项
如果我选择项目并来回滚动列表,则会记住并显示和选择(蓝色背景)。
使用didDeselectRowAtIndexPath
和didSelectRowAtIndexPath
,我可以保留自己的所选项目数组。
该部分运作良好。
然而,如果我然后使用sectionForSectionIndexTitle
并跳转到一封信,即使indexPathForSelectedRows
似乎已被重置且现在为空,也会忘记选择。
我自己的数组记得选中了一个项目,我可以在cellForRowAtIndexPath
中设置cell.selected,但是我移动列表的那一刻又被忘记了
任何想法都是一个错误,或者在跳到字母时如何保留选择列表
提前致谢
答案 0 :(得分:1)
请记住,UITableViewCells仅用于显示您的数据,绝不会与您的“模型”保持一对一的关系,因为它们排队并在必要时重复使用(即您可能会展示数千个项目)一个tableview但只分配了少数几个UITableViewCell实例。
因此,您需要跟踪可变数组中所选/取消选择的项目,并确保在tableView:cellForRowAtIndexPath:方法中检查该项目是否存在,然后更新单元格属性以表示您的数据。 / p>
答案 1 :(得分:0)
通过使用NSMutableArray
个选定的行值,可以自己跟踪表中选定的行。然后,在数组中的最后一个对象上调用-selectRowAtIndexPath:animated
来恢复选择。
至于错误:当表跳转到选定的字母时可能发生的事情是一个迷路的-reloadData
会忘记所选择的行。
答案 2 :(得分:0)
我认为它正在发生,因为你的细胞被重复使用。不要重复使用细胞(您没有有效地使用细胞)。否则,
您可以将选择单独存储在一个数组中,稍后将其用于您的目的。!