如何获取一个自定义表格视图单元格的索引path,当它的UIImage被UITapGestureRecognizer在prepareForSegue

确定标题中的很多variables,对不起,我不能再简单一些。

首先,我有一个自定义表格单元格,像这样的描述

在这里输入图像说明

现在,当用户点击单元格本身时,它将转到视图A,但是,有一个UITapGestureRecognizer连接到左侧的UIImage,它连接到一个继续到视图B.

一切正常,但我需要一些数据,这是在表视图单元格内,我可以传递到视图B,所以它可以做一些东西一旦显示视图。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if(segue.identifier == "toViewA") { }else if( segue.identifier == "toViewBFromThatImage" ){ let viewBVC = ( segue.destinationViewController as! viewBVC ) ///////sender is UITapGestureRecognizer ///////somehow want to get indexpath here viewBVC.selectedIndex = SOMEHOW DIRREVED INDEXPATH } } 

也许我应该设置一些东西作为UIImage的标签或手势对象初始化时? 还是应该避免在prepareForSegue中做这个呢?

还是新的这个,所以任何意见,不胜感激。

我build议把segue放在table view cell里面是错误的地方。 它属于视图控制器,在视图控制器上调用委托方法来执行它。

在你的单元格子类中声明一个协议 –

 protocol MyCustomCellDelegate { func imageTappedInCell(cell:MyCustomCell) } 

然后声明一个delegate属性,并在你的手势识别器中使用它 –

 class MyCustomCell { weak var delegate : MyCustomCellDelegate? ... func imageTapped(recognizer:UIGestureRecognizer) { if (recognizer.state == .Ended) { delegate?.imageTapped(self) } } 

然后在你的视图控制器中,你可以实现委托方法。 在委托方法中,您可以使用单元格来标识索引path

  class MyTableViewController: UIViewController,MyCustomCellDelegate { func imageTapped(cell:MyCustomCell) { self.performSegueWithIdentifier("toViewBFromThatImage",sender:cell) } override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if( segue.identifier == "toViewBFromThatImage" ){ let viewBVC = ( segue.destinationViewController as! viewBVC ) let senderCell=sender as! MyCustomCell viewBVC.selectedIndex = self.tableview.indexPathForCell(senderCell)! } } }