一尘不染

意外地在prepareForSegue中找到了nil IBOutlet

swift

我有一个详细视图控制器,我想将标签文本设置为使用indexPath行从数组中获取的值。

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

我一直收到一个致命错误:展开一个可选值时意外发现nil。我尝试切换detailVC.label.text = "Test"到,detailVC.label.text = names[indexPath.row]但每次都遇到相同的错误。

我使用相同的代码行来更改单元格的标签文本,没有任何错误,但是对于空白视图中心的此标签,我似乎无法正确理解?有什么需要改变的想法吗?

顺便说一句,详细视图控制器中的标签是 @IBOutlet weak var label: UILabel!


阅读 211

收藏
2020-07-07

共1个答案

一尘不染

您无法访问IBOutletDetailViewControllerprepareForSegue,因为他们还没有连接。

正如在评论中提到建立一个String物业DetailViewController,将其设置在prepareForSegue并设置text标签的财产viewDidLoadviewWillAppearDetailViewController

2020-07-07