我的UICollectionView
个单元格在加载时有contentview
背景颜色为白色。用户可以通过选择单元格将单元格contentview
的背景颜色更改为青色,假设布尔值(isSplitting)
设置为YES
。
当我在屏幕上放置更多单元格并且用户选择了单元格并因此将其contentview的背景颜色更改为青色时,我的问题就出现了。
我有一些实例,其中青色的单元格被滚动到视图之外,当滚动回来时是白色的。我也有一些情况,其中非青色的单元格滚动到视图中并且是青色的。
我知道单元格正在被重新出现以便在重新加载到不同的indexpath
时保留其背景颜色。
我已经解决了在滚动到视图时未选择的单元格成为青色的问题。然而,当滚动进出视图时,我无法解决某些选定单元格失去青色的问题。
以下是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];
}
}
}
我知道确实选择了正确的单元格,因为使用上述循环的另一个操作会产生所需的结果。如果我选择前几个项目(将它们转为青色),向右滚动并选择第10个项目,逻辑似乎会崩溃。当我向左滚动时,第一对仍然是青色,但在向右滚动时,第10对又回到白色。
答案 0 :(得分:1)
使用isEqual:比较indexPaths而不是==
if ([indexPath isEqual:collectionIndexPath]) {