2016-04-25 9 views
0

私はログインビューのアプリケーションを持っています。 appDelegateでは、ユーザーがパスワードでアプリケーションをロックしているかどうかを確認します。もしそうなら、彼はログインビューに行きます。フォアグラウンドに入った後すぐに表示される

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) 

appを終了してもう一度入力すると、ユーザーがパスワードを使用しているかどうかが再度確認されます。はいの場合、最初のコードが再び呼び出されます(コードが呼び出されたことを確認しました)(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

ご説明してくれてありがとう、あなたのソリューションは、同じようにうまく動作します。 –