我的 UICollectionView
的单元格有一个 contentview
在加载时背景颜色为白色。假设 bool 值 (isSplitting)
设置为 YES
,用户可以通过选择单元格将单元格 contentview
的背景色更改为青色。
当我有更多的单元格然后适合屏幕并且用户选择了单元格并因此将他们的内容 View 的背景颜色更改为青色时,我的问题就出现了。
我有这样的例子,青色的单元格被滚动到 View 之外,而当滚动回来时是白色的。我也有一些实例,其中不是青色的单元格滚动到 View 中并且是青色的。
我知道当加载到不同的 indexpath
时,单元格正在出队以供重用并保留其背景颜色。
我已经解决了未选中的单元格在滚动到 View 中时变为青色的问题。但是,我无法解决某些选定单元格在滚动进出 View 时失去青色的问题。
这是我在 cellForItemAtIndexPath
中的当前逻辑。
if (!isSplitting) {
cell.contentView.backgroundColor = [UIColor whiteColor];
}
else{
for (NSIndexPath *collectionIndexPath in [self.myCollectionView indexPathsForSelectedItems]) {
if (indexPath == collectionIndexPath) {
cell.contentView.backgroundColor = [UIColor cyanColor];
break;
}
else{
cell.contentView.backgroundColor = [UIColor whiteColor];
}
}
}
我知道确实选择了正确的单元格,因为使用上面相同的 for 循环的另一个操作产生了预期的结果。如果我选择前几个项目(将它们变成青色),向右滚动并选择第 10 个项目,逻辑似乎会崩溃。当我向左滚动时,第一对仍然是青色,但再次向右滚动时,第 10 个又变回白色。
最佳答案
使用 isEqual: 来比较 indexPaths 而不是 ==
if ([indexPath isEqual:collectionIndexPath]) {
关于ios - 如何在滚动时保持 UICollectionView Cells 的背景颜色不变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15060922/