Ios 如何在单元格上调用cellForItemAtIndexPath而不丢失其选定状态?

Ios 如何在单元格上调用cellForItemAtIndexPath而不丢失其选定状态?,ios,uicollectionview,Ios,Uicollectionview,我有一个collectionView,其单元格在单击时需要更改其图像和边框颜色 我已覆盖UICollectionViewCell子类中的setSelected:以更改边框颜色,并更改了cellForItemAtIndexPath中的图像。但是我不知道如何在我选择了一个单元格后使它们都工作,在这种情况下不调用cellForItemAtIndexPath。如果我显式调用reloadData或reloadCellAtIndexPath,我不知道是否在cellForItemAtIndexPath中选择了

我有一个collectionView,其单元格在单击时需要更改其图像和边框颜色

我已覆盖UICollectionViewCell子类中的
setSelected:
以更改边框颜色,并更改了
cellForItemAtIndexPath中的图像。但是我不知道如何在我选择了一个单元格后使它们都工作,在这种情况下不调用
cellForItemAtIndexPath
。如果我显式调用
reloadData
reloadCellAtIndexPath
,我不知道是否在
cellForItemAtIndexPath
中选择了单元格

我不想移动
cellForItemAtIndexPath
中的特定代码,因为我显然需要将
cellForItemAtIndexPath
中的代码复制到
didSelectItemAtIndexPath
,我不想重复我自己的操作

我不想添加属性来保存单击单元格的索引,因为不需要添加这样的参数,
[collectionView indexPathsForSelectedItems]
可以很容易地找到这些参数

另外,我不想添加一个属性来引用我的数据模型(其中包含图像),因为这很奇怪


那么,我应该在
cellForItemAtIndexPath
中写入所有这些内容吗?或者是否有任何方法可以直接调用
cellForItemAtIndexPath
,而不清除选定状态?

创建单元格时,您不能将选定和未选定的图像都传递给它,让单元格决定显示哪一个吗?然后,您不必在单元本身中引用您的模型,您仍然可以使用setSelected上的覆盖来更改单元的视觉效果


另一种方法是为单元格提供一个委托属性,并让它在需要时请求一个新图像。

这很简单,您只需要在模型中存储选定的状态,当您需要为索引路径重新创建单元格时,您也可以从中恢复此类信息,在填充单元格所需的所有其他自定义信息旁边。