首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSTableView多选

NSTableView多选
EN

Stack Overflow用户
提问于 2012-06-13 11:43:53
回答 3查看 391关注 0票数 0

我有一个启用了多项选择的NSTableView

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

这部分工作得很好。

但是,如果我随后使用sectionForSectionIndexTitle并跳转到一个字母,选择似乎被忘记了,甚至indexPathForSelectedRows似乎已经被重置,现在是空的。

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

有什么想法吗?这是一个bug吗?或者当你跳到一个字母时,如何保持选择列表?

提前感谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-13 12:26:48

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

至于bug:当表格跳转到所选字母时,可能会发生什么情况,是一个会忘记所选行的流浪-reloadData

票数 0
EN

Stack Overflow用户

发布于 2012-06-13 12:37:15

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

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

票数 1
EN

Stack Overflow用户

发布于 2012-06-13 12:37:03

我认为这是因为你的细胞被重用了。不要重用单元(您没有有效地使用单元)。否则,

您可以自己将所选内容存储在数组中,并在以后使用它。!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11007936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档