我为视图创建了一个标准插座,该插座将根据前一个屏幕上选择的按钮保存不同的信息。
@IBOutlet weak var labelView: UIView!
它显示它在故事板视图和代码本身都是连接的,但是,每次我得到对labelView的任何引用,例如:
if detail.description == "About"
{
labelView.backgroundColor = UIColor.red
}
然后应用程序崩溃了:
fatal error: unexpectedly found nil while unwrapping an Optional value
我已经尝试了我能想到或在互联网上阅读的所有内容:
删除并替换连接
删除了派生数据文件夹,如建议的一篇帖子
创建了对self.view的引用以强制它加载
将其移至viewDidAppear
将其移至viewWillAppear
将其移至viewDidLoad
(这是当前正在的地方)
叫)
我确信在这一点上答案很简单,我完全错过了它。
答案 0 :(得分:1)
要查看插座设置为零的位置,请尝试以下操作:
@IBOutlet weak var labelView: UIView? {
didSet {
print("labelView: \(labelView)")
}
}
加载视图时,您应该看到它设置为初始值。如果它设置为nil
,请在print
上设置一个断点,您应该可以从回溯中看到它发生的位置。
答案 1 :(得分:0)
视图是惰性初始化的。如果您在视图生命周期中 viewDidLoad()
之前调用受影响的代码,请尝试提前访问view
:
if detail.description == "About" {
_ = self.view
labelView.backgroundColor = UIColor.red
}