ViewDidLoad() 不触发后台刷新

Posted

技术标签:

【中文标题】ViewDidLoad() 不触发后台刷新【英文标题】:ViewDidLoad() not triggering background refresh 【发布时间】:2017-06-10 17:58:26 【问题描述】:

所以社区对我的帮助很大,还有一个学校项目。但是我遇到了一个障碍。我正在构建一个简单的厨房计时器应用程序,它是一个带有选项卡视图的 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】:

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

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

【讨论】:

以上是关于ViewDidLoad() 不触发后台刷新的主要内容,如果未能解决你的问题,请参考以下文章

小程序下拉刷新

SwiftUI 后台刷新多个 Section 导致 global index in collection view 与实际不匹配问题的解决

SwiftUI 后台刷新多个 Section 导致 global index in collection view 与实际不匹配问题的解决

vue-element-admin后台 点击侧边栏 刷新当前路由

“刷新”设备旋转视图

iOS7 后台获取