NavigationControllerを使う場合、画面の左上に戻るボタンがありますが、任意のタイミングで前の画面に戻りたい場合や戻る画面を指定したい場合は、コードを記述する必要があります。
NavigaationControllerを使わないのであれば以下の処理で戻ることができますが、NavigationControllerを使う場合、この記述では戻れません。
self.dismiss(animated: true, completion: nil)
そこで、このページではNavigationControllerを使う場合の画面の戻り方について解説します。
1つ前の画面へ戻る場合
1つ前の画面に戻る場合は、戻りたいタイミング(ボタンが押された時や、何か処理が終わった後など)で以下の処理を実行します。
self.navigationController?.popViewController(animated: true)
トップ画面へ戻る場合
トップ画面(階層)に戻りたい場合は、以下の処理を記述します。
self.navigationController?.popToRootViewController(animated: true)
任意の階層へ戻る場合
トップ画面や1つ前ではなく、任意の階層に戻りたい場合は次のように書きます。
self.navigationController?.popToViewController(navigationController!.viewControllers[階層番号], animated: true)
例えば下の写真のように、「FourthView」で「Back」ボタンを押した時に2つ前の「SecondView」に戻りたいとします。
NavigationControllerの階層番号はTopViewから順に0、1、2、3と振られていくので、2つ目の画面に戻りたい場合は階層番号1を指定してあげればいいです。