要使用indexPath行

时间:2015-09-03 21:38:15

标签: ios swift action cell

所以我有一个表视图和一个自定义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")
           }
    }
}

2 个答案:

答案 0 :(得分:1)

而不是代码中的这个:

if let indexPath = self.tableView.indexPathForSelectedRow {

试试这个:

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

答案 1 :(得分:0)

editActionsForRowAtIndexPath中使用发件人对象后 我得到了它的工作。它可能是一个肮脏的解决方案,但它的工作原理。

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)

可能有更好的方法......有人发表评论吗?