«неявное развертывание» означает, что вы пытаетесь получить доступ к «неявно развернутому необязательному» значению, которое не содержит значения, но имеет значение nil
.
В вашем случае вы имеете дело с двумя дополнительными:
- Возможно, не установлен делегат
imageSelectionDelegate
. UIImage(named: "Snow_Background")
может вернуть nil
Доступ к делегату - если nil
приведет к ошибке Unexpectedly found nil while implicitly unwrapping an Optional value
, а доступ к изображению - если nil
- приведет к Unexpectedly found nil while unwrapping an Optional value
Итак, поскольку вы наблюдаете первую ошибку, делегат равен нулю, что кажется странным, потому чтоВы устанавливаете его в viewDidLoad
.
Чтобы исследовать немного больше, вы можете добавить еще немного информации трассировки в ваш обработчик действий, чтобы проверить, что происходит:
@IBAction func didTappedSnowBackground(_ sender: Any) {
print("tapped snow")
guard imageSelectionDelegate != nil else {
print ("delegate is not set")
return
}
guard let bgImage = UIImage(named: "Snow_Background") else {
print ("Snow_Background image does not exist")
return
}
imageSelectionDelegate.setBackgroundImage(selectedImage: bgImage)
print("set image")
let vc = (self.storyboard?.instantiateViewController(withIdentifier: "FootprintVC"))!
self.presentViewController(vc)
}
Затем проверьте вывод.