ログインビューがあります。ログインに成功すると、Navigation Controllerの最初のビューに移動し、ユーザーは設定ビュー、ログアウトビューの順に移動できます。このログアウトにより、ユーザーはログインビュー(Navigation Controllerの一部ではありません)に戻ります。このコードで動作します:
let loginViewController = self.storyboard!.instantiateViewControllerWithIdentifier("Login") as? LoginViewController
self.navigationController!.pushViewController(loginViewController!, animated: true)
ただし、ログインビューの上部にはナビゲーションバーが表示されますが、これはすべきではありません。self.navigationController!.pushViewController
私は使用すべきですか?
Swift:巻き戻しセグエを使用する必要があります。
まず、FirstViewController
に次の行を追加します。
@ IBAction func prepareForUnwind(segue:UIStoryboardSegue){ }
この関数には、実際にはコードが含まれていません。
LogoutViewController
のアンワインドセグエを作成します。このような:FirstViewController
用に作成されたアンワインドセグエを選択します。
セグエ識別子を変更します。
LogoutViewController
のコードに移動し、通常どおりアンワインドセグエを呼び出します。
self.performSegueWithIdentifier( "unwindToViewController1"、送信者:self)
Swift 4
self.performSegue(withIdentifier: "unwindToViewController1"、送信者:self)
ストーリーボードを使用している場合は、セグエニングをほどいてください。
コントローラにアンワインドオプションを作成するだけで、次の場所に移動できます。
@IBAction func unwindToMe(segue: UIStoryboardSegue){}
次に、ストーリーボードからセグエを作成します。
また、戻る必要がある場合は、作成した巻き戻しセグエ識別子を使用してperformSegue
メソッドを呼び出すだけです。
コードからのみ実行したい場合は、次のように書くことができます。
let loginViewController = self.storyboard?.instantiateViewControllerWithIdentifier("Login")
UIApplication.sharedApplication().keyWindow?.rootViewController = loginViewController
この場合、アプリを初期状態に設定します。
Navigation Controllerを使用している場合は、コントローラーから次を使用します。
self.navigationController?.popToRootViewControllerAnimated(true)
それを試してみてください
self.view.window?.rootViewController?.dismissViewControllerAnimated(true, completion: nil)
これにより、アプリケーションフローの最初に戻ります。
Swift 4に更新(ありがとう@javaBeast)
self.view.window?.rootViewController?.dismiss(animated: true, completion: nil)
そのようにViewControllerをプッシュするのではなく、あるViewControllerから別のViewControllerにセグエを作成することをお勧めします。
最初に、最初のViewControllerからログインしているViewControllerにCtrl +クリックする必要があります。次に、属性インスペクターで識別子を指定します。
そして、あなたがしなければならないのはこれだけです:
self.performSegueWithIdentifier("yourIdentifier", sender: self)
さて、ナビゲーションバーについては、ログインビューからNavigation Controllerを削除し、それを最初のビューに関連付けることをお勧めします。ログインビューからナビゲーションバーが削除されます。
self.navigationController?.popToRootViewController(animated: true)
navigation Controllerの最初のコントローラに移動してからNavigation Controllerを閉じるのに最適なオプションです