ViewDidLoad()不会触发后台刷新

时间:2017-06-10 17:58:27

标签: ios swift3 singleton viewcontroller viewdidload

所以社区对学校项目的帮助很大。但是我遇到了麻烦。我正在构建一个简单的厨房计时器应用程序,它是一个带有标签视图的SVC。第一页允许用户设置计时器,然后第二页是基本设置页面,允许用户触发我为满足作业要求而做的随机背景颜色。对于一部分,一切都很有效。一旦用户触发随机颜色用作背景,我希望该背景颜色也应用于其他视图。我接受了我在这里寻求的建议:Change viewController BG color based off another view controller并使用了单身人士。但是,当我从设置视图导航到计时器视图时,没有任何反应。现在我将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 个答案:

答案 0 :(得分:0)

改为viewWillAppear()中的颜色。视图首次加载到内存时会发生viewDidLoad(),但每次出现时都会调用viewWillAppear()

override func viewWillAppear() {
    super.viewWillAppear()
    self.view.backgroundColor = Settings.sharedInstance.backgroundColor
}