解包可选的 IBOutlet 值时为 Nil [英] Nil while unwrapping an Optional IBOutlet value
问题描述
我遇到了一个致命错误:在为
时意外发现 nil.IBOutlet
解包可选值
I have got a fatal error: unexpectedly found nil while unwrapping an Optional value
for an IBOutlet
.
在我的自定义视图中,我已将我的插座与 XIB
文件相关联.我已经仔细检查了这一点.这是它的样子:
In my custom view, I have associated my outlet with a XIB
file. I have double checked this. This is how it looks like:
@IBOutlet weak var label: UILabel! {
didSet {
label.textColor = .redColor()
}
}
我对 layoutSubviews
的实现如下:
override func layoutSubviews() {
super.layoutSubviews()
label.preferredMaxLayoutWidth = label.frame.size.width
}
尽管必须在 UI 元素初始化后调用 layoutSubviews
方法,但我收到一个错误:
Despite the fact, that layoutSubviews
method has to be called after UI elements initialisation, I get an error:
fatal error: unexpectedly found nil while unwrapping an Optional value
此错误由行触发:
label.preferredMaxLayoutWidth = label.frame.size.width
为什么会这样?如何解决?
Why is that so? How to fix it?
推荐答案
尝试在 viewDidLayoutSubviews
而不是 layoutSubviews
中进行.您的 UI 元素应该在 viewDidLayoutSubviews
中准备好,但在 layoutSubviews
中不需要.
Try doing it in viewDidLayoutSubviews
instead of layoutSubviews
. You UI elements should be ready in viewDidLayoutSubviews
, but not necessary in layoutSubviews
.
这篇关于解包可选的 IBOutlet 值时为 Nil的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!