【问题标题】:Accessing a Table View IndexPath from prepareForSegue从 prepareForSegue 访问表视图 IndexPath
【发布时间】:2016-07-12 20:29:08
【问题描述】:

在我的表格视图控制器的准备转场功能中,我似乎遇到了索引路径错误。

 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" 。当我删除索引名称数组的行时,它会在上面的行(indexPath 定义行)上引发 BAD INSTRUCTION 错误。当我改变!在 indexPathForSelectedRow to () 之后,它说 "Not a function" 。我无法弄清楚如何为所选行获取正确的索引路径!有谁知道发生了什么?

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

【问题讨论】:

  • 你能说明 MainTableView 是在哪里定义的吗?
  • 它在哪一行中断?
  • @CodeBender class MainTableViewController: UITableViewController { @IBOutlet var MainTableView: UITableView!
  • @Amloelxer 它正在这条线上突破let indexPath = self.MainTableView.indexPathForSelectedRow!

标签: ios swift xcode uitableview nsindexpath


【解决方案1】:

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

【讨论】:

    【解决方案2】:
    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]
         }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-21
      • 2015-03-05
      • 2015-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-14
      相关资源
      最近更新 更多