Ios 如何在单元格上调用cellForItemAtIndexPath而不丢失其选定状态?
我有一个collectionView,其单元格在单击时需要更改其图像和边框颜色 我已覆盖UICollectionViewCell子类中的Ios 如何在单元格上调用cellForItemAtIndexPath而不丢失其选定状态?,ios,uicollectionview,Ios,Uicollectionview,我有一个collectionView,其单元格在单击时需要更改其图像和边框颜色 我已覆盖UICollectionViewCell子类中的setSelected:以更改边框颜色,并更改了cellForItemAtIndexPath中的图像。但是我不知道如何在我选择了一个单元格后使它们都工作,在这种情况下不调用cellForItemAtIndexPath。如果我显式调用reloadData或reloadCellAtIndexPath,我不知道是否在cellForItemAtIndexPath中选择了
setSelected:
以更改边框颜色,并更改了cellForItemAtIndexPath中的图像。但是我不知道如何在我选择了一个单元格后使它们都工作,在这种情况下不调用cellForItemAtIndexPath
。如果我显式调用reloadData
或reloadCellAtIndexPath
,我不知道是否在cellForItemAtIndexPath
中选择了单元格
我不想移动cellForItemAtIndexPath
中的特定代码,因为我显然需要将cellForItemAtIndexPath
中的代码复制到didSelectItemAtIndexPath
,我不想重复我自己的操作
我不想添加属性来保存单击单元格的索引,因为不需要添加这样的参数,[collectionView indexPathsForSelectedItems]
可以很容易地找到这些参数
另外,我不想添加一个属性来引用我的数据模型(其中包含图像),因为这很奇怪
那么,我应该在cellForItemAtIndexPath
中写入所有这些内容吗?或者是否有任何方法可以直接调用cellForItemAtIndexPath
,而不清除选定状态?创建单元格时,您不能将选定和未选定的图像都传递给它,让单元格决定显示哪一个吗?然后,您不必在单元本身中引用您的模型,您仍然可以使用setSelected上的覆盖来更改单元的视觉效果
另一种方法是为单元格提供一个委托属性,并让它在需要时请求一个新图像。这很简单,您只需要在模型中存储选定的状态,当您需要为索引路径重新创建单元格时,您也可以从中恢复此类信息,在填充单元格所需的所有其他自定义信息旁边。