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メソッドを実装していない可能性があります。セルは再利用されるため、以前の使用でチェックボックスが追加されたかどうかによって、チェックボックスが付いている場合と付いていない場合があります。

これに対処するいくつかの方法。簡単な方法の1つは、にタグを追加してから、メソッド内のckhboxBtnを削除することです。たとえば、チェックボックスを追加するときは、次を追加します。chkboxBtonprepareForReuse

[chkboxBtn setTag:100];

次に、クラスの実装で、メソッドUICollectionViewCellを追加/展開します。prepareForReuse

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