意外地在 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?
顺便说一下,detail view controller中的label是@IBOutlet weak var label: UILabel!
By the way, the label in the detail view controller is @IBOutlet weak var label: UILabel!
推荐答案
您不能在 prepareForSegue
中访问 DetailViewController
的 IBOutlet
s,因为它们是尚未连接.
You cannot access IBOutlet
s of DetailViewController
in prepareForSegue
because they are not connected yet.
正如评论中提到的,在 DetailViewController
中创建一个 String
属性,在 prepareForSegue
中设置它并设置 text
DetailViewController
的 viewDidLoad
或 viewWillAppear
中标签的属性.
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屋!