У меня есть ВК, где я могу изменить цвет фона моего приложения.
Каждый раз, когда я нажимаю кнопку, меняются все фоновые изображения моего ВК, кроме контейнера ВК.Я полагаю, это потому, что оно определенным образом содержит фоновое меню.
Вы можете получить доступ к фону vc из бокового меню.
Код, который я использовал в фоновом меню, выглядит следующим образом:
@IBAction func lightBrownButton(_ sender: Any) {
let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.containerVC?.colorView.backgroundColor = lightBrown
colorView.backgroundColor = lightBrown
//I have an extension for this
defaults.setColor(color: lightBrown, forKey: BackgroundColorKey)
}
В то время как в других VC я реализовал это:
if defaults.value(forKey: BackgroundColorKey) != nil {
defaults.synchronize()
let color = defaults.colorForKey(key: BackgroundColorKey)
view.backgroundColor = color
colorView.backgroundColor = color
}
NB.colorView - это обычный вид, об этом не нужно беспокоиться.
Код выше находится в моем viewDidLoad()
, я даже пытался вставить это в мой viewWillAppear
, но он не работает (только для контейнера VC).
Я искалздесь было много решений, но ничего не помогло:
Я пытался добавить loadView()
, я пытался создать функцию, содержащую последнюю часть кода, которую я здесь написал, и вызывал ее из делегата, и много других вещей, ноничего ...
Я прочитал документацию Apple для разработчиков о viewWillAppear и обнаружил, что:
Если контроллер представления представлен контроллером представления внутри popover, этот метод не вызываетсяконтроллер представления представления после того, как представленный контроллер отклонен.
Так что, я думаю, это не сработает, потому что изменение фона контейнера похоже на изменение фона моего backgroundVC с помощью метода делегата: он не будет работать, поскольку он находится в том же vc.
Обратите внимание, что когда я закрываю приложение и снова открываю его, фон меняется.