2017-05-05 23 views
0

我有一个应用程序,每天在通知中给你一个报价,并在主视图控制器中显示一个标签。它使用dateHasChanged()函数检测它是否仍然是同一天。Swift 3:刷新应用程序后,它已经在后台,如何?

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

func refresh() { 
    viewDidLoad() 
} 

,并把它称为从的appDelegate(didFinishLaunchingWithOptions)这样的:

let mvc = MainViewController() 
mvc.refresh() 

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

谢谢您的帮助!

回答

0

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

希望有帮助!

0

viewDidLoad通常是重写而不是直接调用。 权当场refreshAppDelegate的:

func applicationDidBecomeActive(_ application: UIApplication) 

或者添加您的viewController作为观察员应用事件详细here

相关问题