我有一个详细视图控制器,我想使用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!
答案 0 :(得分:6)
您无法访问IBOutlet
中DetailViewController
的{{1}},因为它们尚未连接。
如评论中所述,在prepareForSegue
中创建String
属性,在DetailViewController
中设置该属性,并在prepareForSegue
中设置标签的text
属性或viewDidLoad
的{{1}}。
答案 1 :(得分:0)
另一种方法是在设置属性之前调用detailVC.loadViewIfNeeded()
。它将加载您所有IBOutlet
的