出乎意料地在prepareForSegue中找到了nil IBOutlet [英] Unexpectedly found nil IBOutlet in prepareForSegue
问题描述
我有一个详细视图控制器,我想使用indexPath行将标签文本设置为从数组中获取的值。
I have a detail view controller, and I would like to set the label text to a value taken from an array using an indexPath row.
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]
但我每次都会遇到同样的错误。
I keep getting a fatal error: unexpectedly found nil while unwrapping an optional value. I have tried switching detailVC.label.text = "Test"
to detailVC.label.text = names[indexPath.row]
but I keep getting the same error every time.
我使用相同的代码行来更改单元格的标签文本,没有错误,但是对于这个标签在空白视图的中心我似乎无法得到它对?有什么需要改变的想法?
I used the same lines of code for changing the cell's label text, with no errors, but for this label in the center of a blank view I cannot seem to get it right? Any thoughts on what needs to be changed?
顺便说一下,详细视图控制器中的标签是 @IBOutlet weak var label:UILabel!
By the way, the label in the detail view controller is @IBOutlet weak var label: UILabel!
推荐答案
您无法访问 IBOutlet
的 DetailViewController
in prepareForSegue
因为它们尚未连接。
You cannot access IBOutlet
s of DetailViewController
in prepareForSegue
because they are not connected yet.
如评论中所述,创建一个 String
DetailViewController
中的属性,在 prepareForSegue
中设置并设置 viewDidLoad
或 viewWillAppear
中标签的 text
属性 DetailViewController
。
As mentioned in the comments create a String
property in DetailViewController
, set it in prepareForSegue
and set the text
property of the label in viewDidLoad
or viewWillAppear
of DetailViewController
.
这篇关于出乎意料地在prepareForSegue中找到了nil IBOutlet的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!