如何在uicollectionview中检测一个单元格,选择委托方法

时间:2013-01-17 20:55:07

标签: ios uicollectionview uicollectionviewcell

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

1 个答案:

答案 0 :(得分:3)

问题可能是您的自定义单元格未实现prepareForReuse方法。在重复使用单元格时,它可能有也可能没有复选框,具体取决于复选框是否在之前的使用中添加。

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

[chkboxBtn setTag:100];

然后在UICollectionViewCell类实现中,添加/展开prepareForReuse方法:

-(void)prepareForReuse{
    [[self viewWithTag:100] removeFromSuperview];
}