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
}
Другие вопросы по тегам