Имам UITableView
, който има някои персонализирани клетки. В персонализираните клетки имам основен UIImageView
. Когато клетката е създадена, добавям Tap Gesture Recogniser към изгледа на изображението.
Когато изображението бъде докоснато, изпълнявам следното:
- (void) handleImageTap:(UIGestureRecognizer *)gestureRecognizer {
NSLog(@"Image tapped");
UIImageView *imageView = (UIImageView *)gestureRecognizer.view;
// send the image instead of self when firing the segue
[self performSegueWithIdentifier:@"remindMeTurnInfo" sender:imageView];
}
След това предавам изображението в нов контролер за изглед в prepareForSegue
метод:
if ([segue.identifier isEqualToString:@"remindMeTurnInfo"]) {
UIImageView *imgView = (UIImageView *)sender;
MESPlayedTurnReminderViewController *VC = segue.destinationViewController;
VC.turnImage = imgView.image;
}
Въпрос
1. Имам нужда от препратка към клетката, в която е UIImageView, която е била докосната. Така че потребителят докосва едно от изображенията на клетките и аз трябва да знам от коя клетка (indexPath) е докоснато това изображение.
2. Откривам, че понякога, когато се докосне изображението, се извиква didSelectRowAtIndexPath
. Това е неправилно и не трябва да се извиква, а само съответния метод handleTap от Gesture Rec. трябва да се нарече. Как мога да гарантирам, че didSelectRowAtIndexPath
не се извиква, тъй като трябва да изпълня някакъв друг код, когато клетката е действително (правилно) избрана.