【问题标题】:UICollectionView showing selected cellsUICollectionView 显示选定的单元格
【发布时间】:2015-11-03 03:34:47
【问题描述】:
我有一个带有表单字段的tableview,并且有一行使用 segue 调用UICollectionView,一切正常,除了我无法保留选定的单元格(当我显示单元格被选中)后返回tableview。
我的意思是,我选择了我的UICollectionView 单元格,之后我返回表单,但如果我需要再次访问我的UICollectionView 单元格,在提交数据之前取消选择o 选择更多单元格,一旦@ 987654326@ 出现我之前的选择(我打印数组,我看到了值)但我看不到我对选定单元格所做的效果。
如果我要再次选择或取消选择单元格,如何保持选定单元格的效果?
【问题讨论】:
标签:
ios
arrays
swift
uicollectionview
uicollectionviewcell
【解决方案1】:
需要意识到的一点是,这不会自行发生。当您回到表格视图和表单字段时,UICollectionView 被完全销毁。下次显示集合视图时,它是一个新的和不同的集合视图。
因此,如果您想了解集合视图中的选择是什么,您将不得不自己维护它,当您知道集合视图时,故意将其存储在某个地方视图正在被破坏。
这样,下次您显示您的集合视图时,即使那将是一个全新的不同集合视图,您也可以在创建和显示该集合视图时将选择内容的知识传递给该集合视图。用户会有错觉“返回”到collection view,处于相同的状态,但实际上你已经保存并恢复了它的状态。
然后只需在集合视图的项目显示中反映选定状态即可。为此,您需要配置模型,以便在调用 cellForItemAtIndexPath: 时,如果应该选择该项目,则每个单元格看起来都已选中。
【解决方案2】:
每次您使用 segue 调用 UICollectionView 时,都会创建一个新的 UICollectionView 实例,因此不会恢复所选单元格的状态。
我相信你一定已经采用了一组选定索引的索引路径来显示单元格中的视觉变化。
将您的 tableView 类作为 UICollectionView 的委托。使用其委托方法将选定的索引数组返回给 tableView 类。在推送到 UICollectionView 之前,将相同的索引路径数组发送回 UICollectionView。希望它有所帮助.. 快乐编码.. :)