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

时间:2017-01-09 11:47:22

标签: ios uicollectionview

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

我在UICollectionViewCell的子类中重写了setSelected:以更改边框颜色,并在cellForItemAtIndexPath中更改了图像。但我不知道如何在选择单元格后使它们都工作,在这种情况下不会调用cellForItemAtIndexPath。如果我明确地致电reloadDatareloadCellAtIndexPath,我不知道是否在cellForItemAtIndexPath中选择了单元格。

我不想移动cellForItemAtIndexPath中的特定代码,因为显然我需要将cellForItemAtIndexPath中的代码复制到didSelectItemAtIndexPath,我不想要重复一遍。

我不想添加属性来保存单击的单元格的索引,因为不需要添加[collectionView indexPathsForSelectedItems]可以轻松找到的参数。

此外,我不想添加属性来引用我的数据模型(包含图像),因为它很奇怪。

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

1 个答案:

答案 0 :(得分:0)

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

另一种方法是给单元格一个委托属性,让它在需要时有一个新图像。