データベースからダウンロードした画像をマトリックスとして表示するこの UITableView があります。各テーブル行に4つの画像があります。
ビューから画像を選択できるようにするために、UITapGestureRecognizer を使用しています。各選択を一意にするために、各タップ認識エンジンと各 imageView にタグを付けようとしました。そこで問題なのが…
imageViews とレコグナイザーを作成してタグ付けしている for ループ内にログを配置しました。出力で、それらがすべての値を通過することがわかります。ただし、後で画像を押してタグを取得しようとすると、常に「3」(テーブル行の最後の数字) が表示されます。これにより、各ループで新しいオブジェクトを作成しているにもかかわらず、タグが互いに単純に上書きされていると思われます。それか、私の読み方が間違っているかのどちらかです。
関係のない部分を切り取ります。
for (NSInteger i = 0; i < 4; i++){
asyncImage = [[AsyncImageView alloc]
initWithFrame:frame];
[asyncImage loadImageFromURL:url];
asyncImage.tag = i;
NSLog(@"TAG %d", asyncImage.tag);
tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap)];
tapRecognizer.view.tag = i;
NSLog(@"TapTAG %d", asyncImage.tag);
[asyncImage addGestureRecognizer:tapRecognizer];
}
そして方法:
- (void)handleTap{
NSLog(@"TAP %d", self.tapRecognizer.view.tag);
}
私のやり方がまったく間違っていると思われる場合は、正しい方向への軽いプッシュをいつでも歓迎します!
前もってありがとう、トム