Ответ 1
Ты почти там. UIGestureRecognizer имеет свойство view. Если вы выделяете и прикрепляете распознаватель жестов к каждому представлению изображения - так же, как он отображается в фрагменте кода, - тогда ваш код жестов (по цели) может выглядеть следующим образом:
- (void) imageTapped:(UITapGestureRecognizer *)gr {
UIImageView *theTappedImageView = (UIImageView *)gr.view;
}
Чем менее понятен код, который вы предоставили, так это то, как вы связываете свой объект модели Plant с ним соответствующим образом изображения, но это может быть примерно так:
NSArray *myPlants;
for (i=0; i<myPlants.count; i++) {
Plant *myPlant = [myPlants objectAtIndex:i];
UIImage *image = [UIImage imageNamed:myPlant.imageName]; // or however you get an image from a plant
UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; // set frame, etc.
// important bit here...
imageView.tag = i + 32;
[self.view addSubview:imageView];
}
Теперь код gr может сделать это:
- (void) imageTapped:(UITapGestureRecognizer *)gr {
UIImageView *theTappedImageView = (UIImageView *)gr.view;
NSInteger tag = theTappedImageView.tag;
Plant *myPlant = [myPlants objectAtIndex:tag-32];
}