我的UICollectionView
. 最初它显示正常,显示一个单元格网格,每个单元格都有一个UIImageView
. 这些UIImageViews
显示了存储在应用程序包中的具有透明度的 PNG。
我的问题是,一旦UICollectionView
滚动,某些单元格似乎已损坏。
损坏的单元格显示了多个堆叠在一起的图像,最上面的图像是它应该显示的图像,下面的图像是应该在其他单元格中使用的图像。
我最好的猜测是,这与 a 中的单元格UICollectionView
被重用的方式有关,但我愿意接受建议。
这是我用于在以下范围内创建单元格的委托代码UICollectionView
:
// creates the individual cells to go in the menu view
- (UICollectionViewCell*) collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
// create collection view cell
UICollectionViewCell * cell=[collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];
// create a uiview where we can place all views that need to go into this cell
UIView * contents=[[UIView alloc] initWithFrame:cell.contentView.bounds];
[contents setBackgroundColor:[UIColor clearColor]];
[cell.contentView addSubview:contents];
// add a button image
NSString * buttonPath=[[NSBundle mainBundle] pathForResource:@"button" ofType:@"png" inDirectory:[[buttons objectAtIndex:indexPath.row] objectForKey:@"name"]];
UIImage * button=[UIImage imageWithContentsOfFile:buttonPath];
UIImageView * buttonView=[[UIImageView alloc] initWithImage:button];
[buttonView setContentMode:UIViewContentModeScaleAspectFit];
[buttonView setFrame:contents.bounds];
[contents addSubview:buttonView];
// set tag to the indexPath.row so we can access it later
[cell setTag:indexPath.row];
// add interactivity
UITapGestureRecognizer * tap=[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onButtonTapped:)];
[tap setNumberOfTapsRequired:1];
[cell addGestureRecognizer:tap];
// return the cell
return cell;
}
如果需要,我可以提供更多代码。
如何阻止细胞损坏?