IBOutlet 为零
IBOutlet is nil
我已经为一个视图创建了一个标准出口,它将根据在上一个屏幕上选择的按钮保存不同的信息。
@IBOutlet weak var labelView: UIView!
它表明它在情节提要视图和代码本身中都已连接,但是,每次我访问对 labelView 的任何引用时,例如:
if detail.description == "About"
{
labelView.backgroundColor = UIColor.red
}
然后应用程序崩溃:
fatal error: unexpectedly found nil while unwrapping an Optional value
我已经尝试了我能想到的或在互联网上看到的一切:
删除并替换了连接
像一个post建议的那样删除了派生数据文件夹
创建了对 self.view 的引用以强制其加载
移到viewDidAppear
移到viewWillAppear
将其移至 viewDidLoad
(这是当前所在的位置
叫)
在这一点上我确信答案相当简单,我只是完全想念它。
要查看出口设置为 nil 的位置,试试这个:
@IBOutlet weak var labelView: UIView? {
didSet {
print("labelView: \(labelView)")
}
}
您应该会在加载视图时看到它设置为初始值。如果它然后被设置为 nil
,在 print
上放置一个断点,你应该能够从回溯中看到它发生的地方。
视图已延迟初始化。如果您在视图生命周期中调用受影响的代码行 before viewDidLoad()
,请尝试提前访问 view
:
if detail.description == "About" {
_ = self.view
labelView.backgroundColor = UIColor.red
}
我已经为一个视图创建了一个标准出口,它将根据在上一个屏幕上选择的按钮保存不同的信息。
@IBOutlet weak var labelView: UIView!
它表明它在情节提要视图和代码本身中都已连接,但是,每次我访问对 labelView 的任何引用时,例如:
if detail.description == "About"
{
labelView.backgroundColor = UIColor.red
}
然后应用程序崩溃:
fatal error: unexpectedly found nil while unwrapping an Optional value
我已经尝试了我能想到的或在互联网上看到的一切:
删除并替换了连接
像一个post建议的那样删除了派生数据文件夹
创建了对 self.view 的引用以强制其加载
移到
viewDidAppear
移到
viewWillAppear
将其移至
viewDidLoad
(这是当前所在的位置
叫)
在这一点上我确信答案相当简单,我只是完全想念它。
要查看出口设置为 nil 的位置,试试这个:
@IBOutlet weak var labelView: UIView? {
didSet {
print("labelView: \(labelView)")
}
}
您应该会在加载视图时看到它设置为初始值。如果它然后被设置为 nil
,在 print
上放置一个断点,你应该能够从回溯中看到它发生的地方。
视图已延迟初始化。如果您在视图生命周期中调用受影响的代码行 before viewDidLoad()
,请尝试提前访问 view
:
if detail.description == "About" {
_ = self.view
labelView.backgroundColor = UIColor.red
}