Swift 3:刷新app后它已经在后台,怎么样?

时间:2017-05-05 17:56:55

标签: ios

我有一个应用程序,每天在通知中为您提供一个引用,并在主视图控制器中显示一个标签。它使用dateHasChanged()函数检测它是否仍然是同一天。

这是我的问题:如果我(例如)在第一天使用了该应用并且没有正确关闭它,那么请锁定我的智能手机以使其保持活动状态直到第二天,然后解锁我的智能手机,我的应用仍会显示旧报价,即使在viewDidLoad()中它会检查日期是否已更改,并可选择将标签文本更改为新报价。为了解决这个问题,我已经在主视图控制器中编写了一个函数:

func refresh() {
     viewDidLoad()
}

并从appDelegate(didFinishLaunchingWithOptions)中调用它:

let mvc = MainViewController() 
mvc.refresh()

但它在运行时只是给我一个错误。在我的应用程序在后台保持活动较长时间后,如何刷新屏幕?

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

viewDidLoad通常用于覆盖而不是直接调用。 refresh的正确位置位于AppDelegate

func applicationDidBecomeActive(_ application: UIApplication)

或将viewController添加为详细here

的应用程序事件的观察者

答案 1 :(得分:0)

你永远不会调用viewDidLoad()方法!!系统在视图最初加载时调用它。要回答您的问题,您可以覆盖viewWillAppear()(这将在应用程序处于后台并打开时调用)。要刷新内容,具体取决于您显示内容的方式。如果使用UITableView,则调用tableView.reloadData()。

希望有所帮助!