我遇到了一个需要花费很多时间的问题,但无法弄清楚问题:
我创建了一个内容非常简单的UICollectionView,一个标注了cell_number,当选择一个单元格时,单元格的背景变为橙色。 我创建了一个带有xib文件的自定义单元格用于设计(非常简单)。我在我的DemoUICVViewController.m文件中从我的UICollectionView加载这个单元格通常像许多人那样做了一些步骤: - 在ViewDidload中声明自定义单元格类:
[self.collectionView registerClass:[MyCustomCell class] forCellWithReuseIdentifier:@"MyCell"];`
- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath {
MyCustomCell * myCell = (MyCustomCell*)[cv dequeueReusableCellWithReuseIdentifier:@"myCell" forIndexPath:indexPath];
myCell.lable.text = [arrayNumber objectAtIndex:indexPath.item];
return myCell;
}
并在选中时:
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
// Get the cellForItemAtIndexPath and set the background coler of cell to orange
}`
我返回的部分1的数量,以及第I部分中的项目数量返回10
UICollectionView中的所有单元格都正确显示。但是当我点击选择一个细胞时,我不仅看到细胞是橙色的,而且其他一些细胞也会变成橙色,例如细胞5和细胞9。
我调试但是didSelectItemAtIndexPath
只被调用一次并且在右边的索引处,当其他一些单元格也是橙色时非常奇怪。
我不确定问题是否是细胞标识符的可重用性,有人可以给我一些建议。
我附上照片,例如: Image describes
答案 0 :(得分:1)
最后我找到了修复的根本原因:添加此行以检查
collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
...
if(myCell.selected)
// set background of cell to orange;
else
// set white background;
... }