2013-02-25 83 views
1

我的UICollectionView的单元格有一个contentview,加载后背景颜色为白色。用户可以通过选择单元格,将单元格的contentview的背景颜色更改为青色,假定布尔值(isSplitting)设置为YES。当我有更多的细胞,然后在屏幕之外的如何在滚动时保持UICollectionViewCells的背景颜色不变?

enter image description here

我的问题出现了,并且用户已经选定的细胞,从而改变了他们的内容查看的背景色青色。

我有一些实例,其中青色的单元格滚动出视图并且滚动回来时是白色的。我还有一些情况,其中非青色的单元格滚动到视图中并且是青色的。

据我所知,这些细胞正在出院重新使用,并在加载到不同的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个项目,逻辑似乎会崩溃。当我向左滚动时,第一对情侣仍然是青色,但在滚动到右侧时,第十位回到白色。

+0

什么是背后isSplitting逻辑? – 2013-02-25 06:05:35

回答

1

使用isEqual:方法的indexPaths比较,而不是==

if ([indexPath isEqual:collectionIndexPath]) { 
+0

这解决了它!非常感谢。 – IkegawaTaro 2013-02-25 06:42:18