我有一个UITableView,我在其中填充自定义构建的UITableViewCells。这些有一张图片和一些标签。
有没有办法在点击图片时执行某个segue,但是当我点击每个标签时它会执行不同的segue。我只想在点击UIImageView或UILabels时执行这些segue。
我目前正在玩以下想法。
我的代码在我创建UITableViewCells的UITableView cellForRowAtIndexPath委托中看起来像这样
cell.myImage.userInteractionEnabled = YES;
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doSomething:)];
singleTap.numberOfTapsRequired = 1;
singleTap.delegate = self;
[cell.myImage addGestureRecognizer:singleTap];
当我点击UIImageView时,这会覆盖表视图的didSelectRowAtIndexPath委托,所以我尝试从doSomething:函数触发segue但是这个函数不知道UITableView indexPath所以无法将正确的信息发送到目的地viewcontroller(它总是发送0)。
我确信必须轻松做到这一点
欢迎任何想法。提前谢谢。
答案 0 :(得分:0)
UIGestureRecognizers具有您可以访问的视图属性。迭代该视图的超级视图,直到您拥有UITableViewCell并调用:
[tableView indexPathForCell:cell];
应该为您提供IndexPath。
答案 1 :(得分:0)
您可以通过在点击处理程序NSIndexPath
中添加以下内容来获取myImage
个单元格doSomething:
- (void)doSomething:(UITapGestureRecognizer *)sender {
if (sender.state == UIGestureRecognizerStateEnded) {
CGPoint touch = [sender locationInView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:touchPoint];
NSLog(@"indexPath: %@", indexPath);
//Select cell and trigger didSelectRowAtIndexPath:
[self.myTableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionNone];
[self tableView:self.myTableView didSelectRowAtIndexPath:indexPath];
}
}