我有一个启用了多项选择的NSTableView
如果我选择项目并来回滚动列表,它们会被记住、显示和选择(蓝色背景)。使用didDeselectRowAtIndexPath和didSelectRowAtIndexPath,我可以保留自己的选定项数组。
这部分工作得很好。
但是,如果我随后使用sectionForSectionIndexTitle并跳转到一个字母,选择似乎被忘记了,甚至indexPathForSelectedRows似乎已经被重置,现在是空的。
我自己的数组记得选择了一个项目,我可以在cellForRowAtIndexPath中设置cell.selected,但是当我移动列表的瞬间,它又被遗忘了
有什么想法吗?这是一个bug吗?或者当你跳到一个字母时,如何保持选择列表?
提前感谢
发布于 2012-06-13 12:26:48
通过使用选定行值的NSMutableArray,您可以自己跟踪表中选定的行。然后,只需在数组中的最后一个对象上调用-selectRowAtIndexPath:animated来恢复选择。
至于bug:当表格跳转到所选字母时,可能会发生什么情况,是一个会忘记所选行的流浪-reloadData。
发布于 2012-06-13 12:37:15
请记住,UITableViewCells仅用于显示您的数据,它们与您的“模型”绝不存在一对一的关系,因为它们会排队并在必要时重用(例如,您可能在一个表视图中显示了数千个项目,但分配的UITableViewCell实例却很少)。
因此,您需要跟踪可变数组中选中/取消选中的项,并确保在tableView:cellForRowAtIndexPath:方法中检查该项的存在,然后更新单元格属性以表示数据。
发布于 2012-06-13 12:37:03
我认为这是因为你的细胞被重用了。不要重用单元(您没有有效地使用单元)。否则,
您可以自己将所选内容存储在数组中,并在以后使用它。!
https://stackoverflow.com/questions/11007936
复制相似问题