2016-04-25 40 views
0

我有一個應用程序的登錄視圖。在appDelegate中,我檢查用戶是否用密碼鎖定了應用程序。如果他確實去了登錄視圖。 (稱爲在didFinishLaunchingWithOptions碼)swift - 進入前臺後的視圖

let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 
let nav = storyboard.instantiateViewControllerWithIdentifier(Views.LoginVC.rawValue) 
self.window = UIWindow(frame: UIScreen.mainScreen().bounds) 
self.window?.rootViewController = nav 
self.window?.makeKeyAndVisible() 

在我登錄之後,存在於不同的導航控制器的實際內容。

let vc = self.storyboard?.instantiateViewControllerWithIdentifier(Views.MainVC.rawValue) 
let rootVC = UINavigationController(rootViewController: vc!) 
self.presentViewController(rootVC, animated: false, completion: nil) 

當關閉應用程序並再次輸入時,appDelegate會再次檢查用戶是否使用密碼。如果是,則再次調用第一個代碼(我檢查了代碼被調用)(代碼從applicationWillEnterForeground調用)。但是不要去登錄視圖,而是停留在主內容視圖。如果他再次離開,則會在控制檯中彈出錯誤消息。

2016-04-25 20:50:52.714 Point[7222:123809] Snapshotting a view that has not been rendered results in an empty snapshot. Ensure your view has been rendered at least once before snapshotting or snapshot after screen updates. 

我需要更改什麼,所以應用程序在返回時再次顯示登錄視圖?我如何避免這個錯誤信息?

UPDATE

我只是通過調用applicationDidBecomeActive而不是didFinishLaunchingWithOptions代碼解決我的問題。我不知道這是爲什麼,但它的工作原理!

回答

0

不,我認爲你有一個錯誤。您應該將代碼放在applicationWillEnterForeground()中,因爲您希望每次用戶運行應用程序時都要調用一次代碼。

應用程序處於「非活動狀態」,但它仍在屏幕上,但未處於活動狀態。例如,如果您雙擊主頁按鈕,或者您收到警報。每當應用程序從非活動狀態轉換爲活動狀態時,方法applicationDidBecomeActive()都會被調用。

enter image description here

+0

謝謝你的解釋,你的解決方案作品一樣好。 –