【Swift/iOS】遷移元画面への戻り方

遷移元画面へ戻る方法について解説します。

モーダル型の通常の画面遷移と、Navigation Controller管理下での階層型画面遷移では、戻り方が違いますので注意して下さい。

スポンサーリンク

環境

この記事の情報は次のバージョンで動作確認しています。

【Swift】Version 4.1.2
【Xcode】Version 10.0
【iOS】12.0
スポンサーリンク

通常の画面遷移(モーダル型)の場合

present()メソッド、あるいはSegueのPresent Modallyで画面遷移してきた場合がこれに該当します。遷移元画面の上に現在の画面が上書きされているイメージです。

ViewControllerクラスの戻りたい場所で次のコードを記述します。

dismiss()はViewController自身を破棄するメソッドです。

遷移元の上に上書きしていた遷移先画面が破棄された結果、元の画面に戻ります。

スポンサーリンク

Navigation Controller管理下の場合

pushViewController()メソッド、あるいはSegueのShowで画面遷移してきた場合がこれに該当します。

Navigation Controller管理下では標準でbackボタンがついていますので、1つ前の画面に戻るだけなら実装は不要です。

任意のタイミングで戻りたい、あるいは戻る画面を指定したい場合は、コードによる実装が必要となります。

1つ前の画面に戻る(popViewController)

1つ前の画面に戻るには、ViewControllerクラスの戻りたい場所で次のコードを記述します。

Navigation Controllerで制御されている画面遷移ツリーの中で、1つ前の階層に戻るイメージです。

階層のトップに戻る(popToRootViewController)

Navigation Controllerによって管理される画面ツリーのトップ画面(rootView)に戻るには、ViewControllerクラスの戻りたい場所で次のコードを記述します。

トップ画面(rootView)とはstoryboard上でNavigation Controller部品と直接つながっている画面を指します。

任意の階層に戻る(popToViewController)

Navigation Controllerの画面ツリー情報はUINavigationController.viewControllersに配列として管理されています。

これを利用して、次のようなコードで、任意の階層に戻る事が可能です。

なお、移動できるのは戻る場合だけで、現在の画面より先へは移動できないので注意して下さい。

スポンサーリンク

まとめ

  • 通常画面遷移か、Navigation Controller配下かによって戻り方が違う。
  • 通常画面遷移のの場合は、dismiss()メソッド。
  • Navigation Controller配下では、popViewController()メソッド。
  • Navigation Controller配下では任意の階層に戻る事が可能。