iOS 10 UICollectionView 单元格选择和取消选择

iOS 10 UICollectionView Cell selection and deselection

我想在 selection 和 deselection 上修改我的 UICollectionView 细胞。虽然 backgroundViewselectedBackgroundView 自动工作,但这并不涵盖更复杂的情况,例如想要更改文本颜色。

在 iOS 10 之前,我可以简单地:

  1. 根据 cellForItemAt
  2. 中的 isSelected 配置单元格
  3. 将其修改为didSelectItemAt
  4. 中的selected状态
  5. 将其修改为didDeselectItemAt
  6. 中的去selected状态

但是,由于 iOS 10 更改为 UICollectionView,存在单元格可以离开屏幕的极端情况,我可以 select 一个屏幕上的单元格,然后滚动之前- selected 单元格并在 selected 配置中查看它。我现在在视觉上有两个 selected 单元格,尽管实际上只有一个 selected 单元格。

这是因为当单元格不在屏幕上时,我无法在 didDeselectItemAt 中找到它来配置它。它在被回收之前保持未更新状态。

我想我已经找到了答案,但由于我没有在其他地方看到它,所以将它张贴在下面,这样可能会有帮助。非常感谢任何其他想法,以确保我的想法是正确的。

这个问题是 UICollectionView cell selection and cell reuse

的重新措辞重复

查看我关于 iOS10 的回答,具体如下: