0

NSTableView 启用了多项选择

如果我选择项目并来回滚动列表,它们会被记住并显示和选择(蓝色背景)。使用 didDeselectRowAtIndexPath 并且didSelectRowAtIndexPath 我能够保留我自己的选定项目数组。

那部分效果很好。

但是,如果我随后使用sectionForSectionIndexTitle 并跳转到一个字母,则该选择似乎被遗忘,甚至indexPathForSelectedRows 似乎已被重置并且现在为空。

我自己的数组记得选择了一个项目,我可以在其中设置 cell.selectedcellForRowAtIndexPath 但是当我移动列表时它又被遗忘了

任何想法是这是一个错误还是在跳转到一个字母时如何保留选择列表

提前致谢

4

3 回答 3

1

请记住,UITableViewCells 仅用于显示您的数据,它们与您的“模型”绝不存在一对一的关系,因为它们会在必要时排队并重用(即,您可能在 tableview 中显示数千个项目,但只分配了少数 UITableViewCell 实例)。

因此,您需要跟踪可变数组中选定/取消选定的项目,并确保在 tableView:cellForRowAtIndexPath: 方法中检查该项目的存在,然后更新单元格属性以表示您的数据。

于 2012-06-13T04:37:15.460 回答
0

通过使用一个NSMutableArray选定的行值,可以自己跟踪表中选定的行。然后就是调用-selectRowAtIndexPath:animated数组中的最后一个对象来恢复选择。

至于错误:当表格跳转到选定的字母时可能发生的事情是一个-reloadData会忘记选定行的流浪者。

于 2012-06-13T04:26:47.670 回答
0

我认为这是因为你的细胞被重复使用了。不要重复使用细胞(您没有有效地使用细胞)。除此以外,

您可以自己将选择存储在一个数组中,稍后将其用于您的目的。!

于 2012-06-13T04:37:03.213 回答