我正在构建一个类似于iPhone照片应用的应用。我可以使用PSUICollectionView
在视图中显示图像。当我点击集合视图的网格单元格时,应该会出现一个复选框图像。我的问题是当我使用以下代码时,我看到多个随机单元格正在填充复选框图像。
- (void)collectionView:(PSUICollectionView *)collectionView didSelectItemAtIndexPath: (NSIndexPath *)indexPath
{
NSLog(@"%@ - %d", NSStringFromSelector(_cmd), indexPath.item);
ImageGridCell *cell = (ImageGridCell *)[collectionView cellForItemAtIndexPath:indexPath];
UIButton *chkboxBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[chkboxBtn setFrame:CGRectMake(60, 60, 30, 30)];
[chkboxBtn setImage:[UIImage imageNamed:@"Checkmark-iPhone.png"] forState:UIControlStateNormal];
[cell addSubview:chkboxBtn];
}
答案 0 :(得分:3)
问题可能是您的自定义单元格未实现prepareForReuse
方法。在重复使用单元格时,它可能有也可能没有复选框,具体取决于复选框是否在之前的使用中添加。
解决这个问题的几种方法。一种简单的方法是向ckhboxBtn
添加标记,然后删除chkboxBton
方法中的prepareForReuse
。例如,在添加复选框时,添加以下内容:
[chkboxBtn setTag:100];
然后在UICollectionViewCell
类实现中,添加/展开prepareForReuse
方法:
-(void)prepareForReuse{
[[self viewWithTag:100] removeFromSuperview];
}