出乎意料地在prepareForSegue中找到了nil IBOutlet

Mik*_*idt 2 xcode ios 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)
        }
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

vad*_*ian 7

您不能访问IBOutlet第DetailViewController的prepareForSegue,因为他们还没有连接.

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

  • 不应该,将;-) (2认同)