Как я могу изменить цвет фона VC с другого контроллера представления?

#ios #swift #iphone

#iOS #swift #iPhone

Вопрос:

У меня есть две раскадровки, и мне нужно из формы VC во второй раскадровке изменить цвет фона на VC из основной раскадровки. Я использую этот код в кнопке на второй раскадровке:

 let vc = FirstScreenVC()
vc.view.backgroundColor = .black
  

и у меня эта ошибка:

«Неожиданно найдено значение nil при неявном развертывании необязательного значения»

в файле FirstScreenVC в viewDidLoad.

Debug сообщает, что 3 UIElement на FirstScreenVC равно нулю, но я вижу это, и это первая загрузка в приложении.

Комментарии:

1. Можете ли вы привести лучший пример своего кода?

2. programmingios.net/dont-make-a-new-instance-by-mistake

Ответ №1:

Вы создали экземпляр нового FirstScreenVC, который не тот, который вы видите. В зависимости от того, как настроен ваш стек, вам нужно либо получить существующий ViewController, либо передать ссылку на него ViewController, который должен внести изменения.

Ответ №2:

Если вы используете контроллер навигации, вы можете использовать метод prepareForSegue при переходе на другую страницу.

 
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        let vc = segue.destination as! SecondViewController
        vc.view.backgroundColor = UIColor.black
    }