ViewDidLoad() не вызывает фоновое обновление
Так что сообщество очень помогло мне вместе со школьным проектом. Однако я наткнулся на препятствие. Я создаю простое приложение Kitchen timer, которое представляет собой SVC с представлением вкладок. Первая страница позволяет пользователю установить таймер, а вторая - это страница основных настроек, которая позволяет пользователю запускать произвольный цвет фона, который я выбрал, чтобы выполнить требования задания. Все работает отлично, скажем, с одной стороны. Когда пользователь запускает случайный цвет для использования в качестве фона, я хотел, чтобы этот цвет фона также применялся к другим представлениям. Я пошел с советом, который искал здесь: измените цвет viewController BG на основе другого контроллера вида и использовал синглтон. Однако при переходе от просмотра настроек к просмотру таймера ничего не происходит. Теперь я добавил self.view.backgroundColor = Settings.sharedInstance.backgroundColor
к моему viewDidLoad()
вот так:
`override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.view.backgroundColor = Settings.sharedInstance.backgroundColor
print(Settings.sharedInstance.backgroundColor)
}
`Ничего не происходит. Тем не мение! в качестве теста я добавил тот же блок в:
@IBAction func pickerStartButtonChnage(_ sender: UIButton) {
self.view.backgroundColor = Settings.sharedInstance.backgroundColor
print(Settings.sharedInstance.backgroundColor)
if !cron.isValid{ // prevent more than one time on the thread
nameIt.text = cronStr(cronCount)
cron = Timer.scheduledTimer(timeInterval: timeInterval,
target: self,
selector: #selector(TimerViewController.timerDidEnd(_:)),
userInfo: "is done!",
repeats: true) //repeating timer in the second iteration
}
}
Оно работает! Мой вопрос: почему фон не срабатывает в viewDidLoad()
, когда он работает нормально, когда кнопка срабатывает? Я ценю любые советы заранее, спасибо.
1 ответ
Изменить цвет в viewWillAppear()
вместо. viewDidLoad()
происходит, когда представление впервые загружается в память, но viewWillAppear()
вызывается каждый раз, когда он появится.
override func viewWillAppear() {
super.viewWillAppear()
self.view.backgroundColor = Settings.sharedInstance.backgroundColor
}