表行操作使用indexPath行继续

所以我有一个表格视图和自定义VC。 那么我有一个对象与detailImage属性练习。 我怎样才能从表行操作indexPath.row到我的prepareForSegue函数?

这返回nilself.tableView.indexPathForSelectedRow

 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if segue.identifier == "detailsSegue" { if let indexPath = self.tableView.indexPathForSelectedRow { let destinationController = segue.destinationViewController as! DetailViewController print(self.exercises[indexPath.row].image) destinationController.detailImage = self.exercises[indexPath.row].image print ("send") } } } 

而不是在你的代码中:

 if let indexPath = self.tableView.indexPathForSelectedRow { 

尝试这个:

 if let indexPath = self.tableView.indexPathForSelectedRow() { 

editActionsForRowAtIndexPath使用sender对象之后,我使用了它。 这可能是一个肮脏的解决scheme,但工作。

 override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? { let detailsAction = UITableViewRowAction(style: .Default, title: "Details", handler: {(action:UITableViewRowAction!, indexPath:NSIndexPath!) -> Void in self.performSegueWithIdentifier("detailsSegue", sender: indexPath) //sender is the indexPath } ) 

然后在prepareForSegue

 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if segue.identifier == "detailsSegue" { let indexPath = sender! let destinationController = segue.destinationViewController as! DetailViewController print(self.exercises[indexPath.row].image) 

有可能是一个更好的方法..任何人评论?