2017-05-05 25 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

相關問題