我有UICollectionView
。当用户单击一个单元格时,单元格的颜色变为红色。我编写了上面的部分,它的工作完美。
但是,当我在下面滚动时,集合视图中的其他单元格已突出显示为红色。我确信它没有被选中但只是突出显示。
我该如何解决这个问题。
我的代码如下:
cellForItemAtIndexPath 方法
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
static NSString *CellIdentifier = @"cell";
ViewCell *vc = [collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath];
vc.vciv.image = [arrayOfImages objectAtIndex:indexPath.row];
return vc;
}
didSelectItemAtIndexPath 方法
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
if([items containsObject:allItem[indexPath.row]] ){
UICollectionViewCell *c =[collectionView cellForItemAtIndexPath:indexPath];
c.backgroundColor = [UIColor clearColor];
} else {
UICollectionViewCell *c =[collectionView cellForItemAtIndexPath:indexPath];
c.backgroundColor = [UIColor redColor];
}
答案 0 :(得分:1)
当集合视图单元格被重用时,您需要确保cellForItemAtIndexPath:
方法中没有突出显示出列单元格:
UICollectionViewCell *vc = [collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath];
vc.backgroundColor = [UIColor clearColor];
此代码将在出列时始终清除单元格的背景。如果您需要保留突出显示,则需要存储要突出显示的单元格的indexPath
,并检查该列表中的当前单元格。
修改强>
您的items
变量似乎非常适合这样做。
所以你会这样做:
UICollectionViewCell *vc = [collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath];
vc.backgroundColor = [items containsObject:allItem[indexPath.row]] ? [UIColor redColor] : [UIColor clearColor];