1

UICollectionView的单元格contentview在加载时具有白色背景色。contentview假设布尔值(isSplitting)设置为 ,用户可以通过选择单元格将单元格的背景颜色更改为青色YES

在此处输入图像描述

当我有更多单元格然后适合屏幕并且用户选择了单元格并因此将其内容视图的背景颜色更改为青色时,我的问题就出现了。

我有一些实例,青色的单元格被滚动到视野之外,而当滚动回来时是白色的。我还有一些实例,其中非青色的单元格被滚动到视图中并且是青色的。

我知道当加载到不同的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];
            }
        }
    }

我知道确实选择了正确的单元格,因为使用上述相同 for 循环的另一个操作会产生所需的结果。如果我选择前几个项目(将它们变为青色),向右滚动并选择第 10 个项目,逻辑似乎崩溃了。当我向左滚动时,第一对仍然是青色,但在再次向右滚动时,第 10 个又回到了白色。

4

1 回答 1

1

使用 isEqual: 比较 indexPaths 而不是 ==

if ([indexPath isEqual:collectionIndexPath]) {
于 2013-02-25T06:22:02.277 回答