2

我正在构建一个类似于 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];
}
4

1 回答 1

3

问题可能是您的自定义单元没有实现该prepareForReuse方法。当一个单元被重复使用时,它可能有也可能没有复选框,这取决于复选框是否是在以前的使用中添加的。

解决这个问题的几种方法。一种简单的方法是在 中添加标签ckhboxBtn,然后chkboxBtonprepareForReuse方法中删除 。例如,添加复选框时,添加以下内容:

[chkboxBtn setTag:100];

然后在您的UICollectionViewCell类实现中,添加/扩展该prepareForReuse方法:

-(void)prepareForReuse{
    [[self viewWithTag:100] removeFromSuperview];
}
于 2013-01-17T22:55:14.887 回答