从prepareForSegue访问表视图IndexPath

时间:2016-07-12 20:29:08

标签: ios swift xcode uitableview nsindexpath

在我的表视图控制器的prepare segue函数中,我似乎收到了索引Path的错误。

 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if(segue.identifier == "showView"){
        let detailVC: DetailViewController = segue.destinationViewController as! DetailViewController
        let indexPath = self.MainTableView.indexPathForSelectedRow!

        detailVC.test_label.text = names[indexPath.row]
        self.MainTableView.deselectRowAtIndexPath(indexPath, animated: 
    }
}

对于indexPath.row,它显示“BAD_INSTRUCTION”。当我删除索引names数组的行时,它会在上面的行(indexPath定义行)上抛出BAD INSTRUCTION错误。当我改变了!在indexPathForSelectedRow to()之后,它显示“Not a function”。我无法弄清楚如何为所选行获取正确的索引路径!有谁知道发生了什么?

- 控制台中的错误是:         致命错误:在解包可选值时意外发现nil

2 个答案:

答案 0 :(得分:0)

let indexPath = ...行放置一个断点。查看MainTableView对象是否为零,因为您可能会崩溃,因为它是强制展开nil对象。如果为nil,请检查与storyboard / xib文件的连接。

答案 1 :(得分:0)

Here please find this code. This should work fine.

或改变!至 ?在你的代码中。 //让indexPath = self.MainTableView.indexPathForSelectedRow?

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) 

{

 if(segue.identifier == "showView")

    {

   let detailVC = segue.destinationViewController as! ViewController2
            let path = tableView.indexPathForSelectedRow?.row
            detailVC.test_label.text = names[path]
     }
}