2012-06-13 69 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