iOS 10 UICollectionView 单元格选择和取消选择
iOS 10 UICollectionView Cell selection and deselection
我想在 selection 和 deselection 上修改我的 UICollectionView
细胞。虽然 backgroundView
和 selectedBackgroundView
自动工作,但这并不涵盖更复杂的情况,例如想要更改文本颜色。
在 iOS 10 之前,我可以简单地:
- 根据
cellForItemAt
中的 isSelected 配置单元格
- 将其修改为
didSelectItemAt
中的selected状态
- 将其修改为
didDeselectItemAt
中的去selected状态
但是,由于 iOS 10 更改为 UICollectionView,存在单元格可以离开屏幕的极端情况,我可以 select 一个屏幕上的单元格,然后滚动之前- selected 单元格并在 selected 配置中查看它。我现在在视觉上有两个 selected 单元格,尽管实际上只有一个 selected 单元格。
这是因为当单元格不在屏幕上时,我无法在 didDeselectItemAt
中找到它来配置它。它在被回收之前保持未更新状态。
我想我已经找到了答案,但由于我没有在其他地方看到它,所以将它张贴在下面,这样可能会有帮助。非常感谢任何其他想法,以确保我的想法是正确的。
这个问题是 UICollectionView cell selection and cell reuse
的重新措辞重复
查看我关于 iOS10 的回答,具体如下:
我想在 selection 和 deselection 上修改我的 UICollectionView
细胞。虽然 backgroundView
和 selectedBackgroundView
自动工作,但这并不涵盖更复杂的情况,例如想要更改文本颜色。
在 iOS 10 之前,我可以简单地:
- 根据
cellForItemAt
中的 isSelected 配置单元格
- 将其修改为
didSelectItemAt
中的selected状态
- 将其修改为
didDeselectItemAt
中的去selected状态
但是,由于 iOS 10 更改为 UICollectionView,存在单元格可以离开屏幕的极端情况,我可以 select 一个屏幕上的单元格,然后滚动之前- selected 单元格并在 selected 配置中查看它。我现在在视觉上有两个 selected 单元格,尽管实际上只有一个 selected 单元格。
这是因为当单元格不在屏幕上时,我无法在 didDeselectItemAt
中找到它来配置它。它在被回收之前保持未更新状态。
我想我已经找到了答案,但由于我没有在其他地方看到它,所以将它张贴在下面,这样可能会有帮助。非常感谢任何其他想法,以确保我的想法是正确的。
这个问题是 UICollectionView cell selection and cell reuse
的重新措辞重复查看我关于 iOS10 的回答,具体如下: