1

画像のサムネイルを表示する UICollectionView があります。グリッド内の各画像ビューには、タップ ジェスチャがあります。私の質問は、タップされた正確なセルをどのように取得できますか? 例: 「インデックス # 43 をタップ」。

追加コメント

  • タップ ジェスチャはプログラムで作成され、ストーリー ボードは使用されませんでした。
  • このプロジェクトで ARC とストーリー ボードを有効にしました。

ここに私が来た最も近いものがあります:

UICollectionViewController

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView
                 cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    int row = [indexPath row];

    CollectionViewCell *Cell = [collectionView
        dequeueReusableCellWithReuseIdentifier:@"Cell"
                                  forIndexPath:indexPath];
    // Enable tap gesture on each ImageView
    [Cell.ImageView setUserInteractionEnabled:YES];
    UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapGesture)];
    [tapGesture setNumberOfTouchesRequired:1];
    [tapGesture setNumberOfTapsRequired:1];
    [tapGesture setDelegate:self];
    [Cell.ImageView addGestureRecognizer:tapGesture];

    Cell.ImageView.tag = row; // This tags correctly
}


- (void)tapShowImage // Also, for some reason, 
                     // - (void)handleTapGesture:(UITapGestureRecognizer *)sender
                     // doesn't work. I get an invalid selector error.
{
    NSLog(@"%i", Cell.ImageView.tag);
    // Doesn't work because I can't call Cell.ImageView.tag here.
    // Might be because I"m using SDWebImage to load the image
    // into the ImageView above but not sure.
}
4

1 に答える 1

4

各セルにタップ認識エンジンを追加する必要はありません。collectionView:didSelectItemAtIndexPath: メソッドで、タップされたセルの indexPath を取得できます。

于 2012-12-29T04:29:34.957 に答える