【Swift】NavigationControllerの画面遷移まとめ
どうも、猫吉(@nekokichi1_yos2)です。
NavigationControllerは初期状態のViewControllerとは違い、特殊な遷移を使用できます。
その遷移とは、
- popViewController
- popToViewController
- popToRootViewController
の3つです。
上記の使用方法について紹介します。
解説
popViewController:1つ前の画面に戻る(dismissと同じ)
popToViewController:指定した番号のViewControllerに遷移
(1つ目のViewControllerが起点)
(navigationController?.viewControllers[1]:2つ目のViewControllerに遷移)
popToRootViewController:1つ目のViewControllerに遷移
(RootVIewContollerって1つ目のViewControllerを指す)
ストーリーボード
(2つ前の画面に戻るは無視してください。)
ソースコード
class ViewController: UIViewController { @IBAction func button(_ sender: Any) { //NavigationControllerでも可能 performSegue(withIdentifier: "goNextView", sender: nil) } }
class SecondViewController: UIViewController { @IBAction func goNextView(_ sender: Any) { //StoryBoardIDを使用した画面遷移 let storyboard = self.storyboard?.instantiateViewController(withIdentifier: "goNextView"); self.navigationController?.pushViewController(storyboard!, animated: true) } @IBAction func back(_ sender: Any) { //dismiss(1つ前の画面に戻る)のNavigationControlelr版 self.navigationController?.popViewController(animated: true) } }
class ThirdViewController: UIViewController { @IBAction func firstback(_ sender: Any) { //rootViewController(1番最初の画面)から1つ先の画面(SecondViewController)に戻る(遷移する) self.navigationController?.popToViewController((navigationController?.viewControllers[1])!, animated: true) } @IBAction func rootback(_ sender: Any) { //rootViewControllerに戻る self.navigationController?.popToViewController((navigationController?.viewControllers[0])!, animated: true) //もしくは self.navigationController?.popToRootViewController(animated: true) } }