我有一个collectionView,其单元格需要更改其图像并在单击时更改边框颜色。
我在UICollectionViewCell的子类中重写了setSelected:
以更改边框颜色,并在cellForItemAtIndexPath
中更改了图像。但我不知道如何在选择单元格后使它们都工作,在这种情况下不会调用cellForItemAtIndexPath
。如果我明确地致电reloadData
或reloadCellAtIndexPath
,我不知道是否在cellForItemAtIndexPath
中选择了单元格。
我不想移动cellForItemAtIndexPath
中的特定代码,因为显然我需要将cellForItemAtIndexPath
中的代码复制到didSelectItemAtIndexPath
,我不想要重复一遍。
我不想添加属性来保存单击的单元格的索引,因为不需要添加[collectionView indexPathsForSelectedItems]
可以轻松找到的参数。
此外,我不想添加属性来引用我的数据模型(包含图像),因为它很奇怪。
那么,我应该在cellForItemAtIndexPath
写下所有这些内容吗?或者是否有任何方法可以直接调用cellForItemAtIndexPath
而不清除所选状态?
答案 0 :(得分:0)
创建单元格时,您是否只需将选定图像和未选择图像传递给它,让单元格决定显示哪一个?然后,您不必在单元格本身中引用模型,您仍然可以使用setSelected上的覆盖来更改单元格的视觉效果。
另一种方法是给单元格一个委托属性,让它在需要时有一个新图像。