2016-08-10 15 views
0

アップルによると、スプリットビューは常にアプリケーションのライフタイムを通じてルートビューコントローラーである必要があります。ログアウト後にルートビューコントローラをリロードする方法は?

いつでも私がアカウントからログアウトすると、詳細ビ​​ューコントローラのデータをリロードする唯一の方法は、ユーザーがログアウトした場合にログインコントローラをルートビューコントローラにしてから、再度ルートビューコントローラを起動します。私は上記のやったことをやってなければ

// if the user is not logged in 
if FIRAuth.auth()?.currentUser?.uid == nil { 
     window?.rootViewController = UINavigationController(rootViewController: LoginController()) 
    } else { 
     // If the user is logged in, show the main controller 
     window?.rootViewController = UINavigationController(rootViewController: MainController(collectionViewLayout: UICollectionViewFlowLayout())) 
    } 

これは一例であり、私がログアウトした場合、ログインのビューは、モーダル自身を提示します。別のアカウントにサインインして、ログイン・コントローラーをモーダルに却下した場合、スプリット・ビューは最後のアカウントから同じように見えます。だから私は再ログイン時にスプリットビューが更新されるようなアニメーションをコントローラに記録する方法や技術がありますか?私はガイドラインに従っていることを確認したい。

(注:。。スプリットビューの詳細ビューコントローラのルートがUICollectionViewControllerである私は、プログラムでこのすべてをやっている)

答えて

0

私は通常、永遠にルートとしてとどまる1 rootViewControllerを、持っています。 すべての目的は、ログインとmainControllerを保持して提示することです。 あなたは常にrootViewControllerを持っています。これは、提示されたコントローラ間の切り替えのダイナミックを提供します。

最後にログインしたユーザーからデータが残っていないことを確認するために、私は個人的にプレゼンテーションの前にログインコントローラーとメインコントローラーを割り当てることをお勧めします。

Example: 

class rooViewController: UIViewController { 

    func presentedLogin() { 
     self.loginController = LoginController() 
     self.mainController.dismissViewControllerAnimated(true) { 
      self.presentViewController(self.loginController, animated: true, completion: nil) 
     } 
    } 

    func presentMainApplication() { 
     self.mainController = MainController() 
     self.loginController.dismissViewControllerAnimated(true) { 
      self.presentViewController(self.mainController, animated: true, completion: nil) 
     } 
    } 
} 


//App Delegate or any ether place of this application logic: 

    if FIRAuth.auth()?.currentUser?.uid == nil { 
      rootViewController.presentedLogin() 
     } else { 
      // If the user is logged in, show the main controller 
      rootViewController.presentMainApplication() 
     } 
+0

'self.mainController'はUINavigationController型ですか? 'var mainController:UINavigationController? 'のように –

+0

また、rootViewControllerクラス内にシングルトンインスタンスを持つことはお勧めできませんか? –

+1

最初の質問:私はUIViewControllerを好む、私はこの目的のためのUINavigationControllerの利点を見ることはないので、ルートビューコントローラを持っている必要があります。しかし、それは私のニーズに基づいた個人的な決定です。 2番目の質問:ルートコントローラーは単一インスタンスですが、シングルトーンではありません。それは...ですか? – MCMatan

関連する問題