IBOutlet - ноль
Я создал стандартную розетку для представления, которая будет содержать различную информацию в зависимости от кнопки, выбранной на предыдущем экране.
@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
(где это в настоящее время
называется)
На данный момент я уверен, что ответ довольно прост, и я просто упускаю его.
2 ответа
Чтобы увидеть, где розетка установлена на ноль, попробуйте это:
@IBOutlet weak var labelView: UIView? {
didSet {
print("labelView: \(labelView)")
}
}
Вы должны увидеть начальное значение при загрузке представления. Если это тогда устанавливается в nil
поставить точку останова на print
и вы должны быть в состоянии видеть из следа, где это происходит.
Представления ленивые инициализированы. В случае, если вы вызываете уязвимую строку кода раньше viewDidLoad()
в жизненном цикле представлений, попробуйте получить доступ view
заблаговременно:
if detail.description == "About" {
_ = self.view
labelView.backgroundColor = UIColor.red
}