Ios UICollectionView:问题当我只选择一个单元格时,选择了多个单元格
我面临一个问题,需要花费很多时间,但无法解决这个问题: 我创建了一个UICollectionView,内容非常简单,有一个标签指示单元格编号,当选中一个单元格时,单元格的背景变为橙色。 我用xib文件创建了一个自定义单元格进行设计(非常简单)。我从我的UICollectionView加载这个单元格到我的DemoUICVViewController.m文件中,就像很多人通过以下步骤所做的那样: -在ViewDidload中声明自定义单元类:Ios UICollectionView:问题当我只选择一个单元格时,选择了多个单元格,ios,uicollectionview,Ios,Uicollectionview,我面临一个问题,需要花费很多时间,但无法解决这个问题: 我创建了一个UICollectionView,内容非常简单,有一个标签指示单元格编号,当选中一个单元格时,单元格的背景变为橙色。 我用xib文件创建了一个自定义单元格进行设计(非常简单)。我从我的UICollectionView加载这个单元格到我的DemoUICVViewController.m文件中,就像很多人通过以下步骤所做的那样: -在ViewDidload中声明自定义单元类: [self.collectionView registe
[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,第一节申报单编号10
UICollectionView中的所有单元格都显示正确。但当我点击选择一个单元格时,我不仅看到该单元格是橙色的,而且其他一些单元格也会变为橙色,例如单元格5和单元格9。
我调试了didSelectItemAtIndexPath
只调用了一次,并且在正确的索引处调用,当一些其他单元格也是橙色时,这非常奇怪。
我不确定问题是否在于单元标识符的可重用性,有人能给我一些建议吗
我附上了照片,例如:
我终于找到了要修复的根本原因:添加这一行以进行检查
collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
。。。
}这是因为单元重复使用。关于这个问题有很多答案,所以做一些搜索。@rdelmar:我搜索了,但仍然没有找到清楚的想法,为什么橙色会出现在其他单元格中。我发现了一个类似的问题,但还不够清楚:您似乎注册了一个类(MyCustomCell),但将退出队列的单元格转换为另一个类(myCell)。此外,您的重用标识符在注册时为MyCell,但在退出队列时为MyCell。这些打字错误是在您的问题中还是在您的实际代码中?
if(myCell.selected)
// set background of cell to orange;
else
// set white background;