点击一个细胞后,我的细胞会将背景变为黄色。当背景为黄色时,它将恢复为默认颜色。
一切正常,但是如果我开始滚动一些单元格会将backgroundColor更改为黄色,尽管它没有被选中。不幸的是,它有随机行为。
我更改了使用alloc init
创建单元格,但现在,它会抛出一个错误,上面写着:
cells must be retrieved by calling -dequeueReusableCellWithReuseIdentifier:forIndexPath:
我使用故事板来处理单元格中的元素并使用它们
UICollectionViewCell *cell = [collectionView
dequeueReusableCellWithReuseIdentifier:@"Number Cell"
forIndexPath:indexPath];
UILabel *label = (UILabel *)[cell viewWithTag:100];
label.text = [NSString stringWithFormat:@"%i", indexPath.item + 1];
有什么建议吗?
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
UICollectionViewCell *cell = [collectionView
dequeueReusableCellWithReuseIdentifier:@"Number Cell"
forIndexPath:indexPath];
UILabel *label = (UILabel *)[cell viewWithTag:100];
label.text = [NSString stringWithFormat:@"%i", (int)indexPath.item + 1];
return cell;
}
- (void)collectionView:(UICollectionView *)collectionView
didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
UICollectionViewCell *cell = (UICollectionViewCell *)[collectionView cellForItemAtIndexPath:indexPath];
if ([cell.backgroundColor isEqual:[UIColor yellowColor]]) {
cell.backgroundColor = [UIColor clearColor];
} else {
cell.backgroundColor = [UIColor yellowColor];
}
}
我认为,
- (void)collectionView:(UICollectionView *)collectionView
didSelectItemAtIndexPath:(NSIndexPath *)indexPath
每当我点击一个单元格时都会调用。因此,当颜色清晰时,我将颜色更改为黄色,反之亦然。
答案 0 :(得分:0)
如果您在单元格的setSelected:
方法中设置黄色背景颜色,则会自动执行此操作,假设您有人在调用{{1}时将其恢复正常}}
如果这不起作用,您可以在出单后或单元格的[cell setSelected:NO]
方法中重置单元格的背景颜色。