はじめに
segueを使って画面遷移をしているときに、画面を戻したい場面があったのですが、
実装するのに時間がかかりました。
今回の記事では、segueを使って画面を前に戻す方法を紹介します。
ソースコードです!
https://github.com/h-taro/WithSegue
環境
Xcode 12.5.1
Swift 5.4.2
macOS Big Sur 11.5.2
前提条件
動画のようにfirst
, second
, third
というように画面を表示するアプリケーションがあります。
今回はthird
画面からfirst
画面へ戻りたいです。
実装方法
大まかな実装方法は次です!
- 遷移先の画面に
UIStoryBoardSegue
を引数に持つ関数を定義する - 遷移元の画面に
Unwind segue
を定義する - 定義した
Unwind segue
にsegue identifier
を定義する - 任意のタイミングで
performSegue(withIdentifier: "")
を実行する
Unwind segueの設定方法
まず、遷移先の画面(今回はFirstViewController
)にUIStoryboardSegue
を引数に持つ関数を定義します。
@IBAction func showFirst(segue: UIStoryboardSegue) {
}
次は遷移元画面(今回はThirdViewController
)での作業です。
Third
画面ボタンからExit
へドラッグ&ドロップすることで
Unwind Segue
を定義しました。
定義したUnwind Segue
にshowFirst
というSegue Identifier
を設定しています。
ボタンタップ時に画面遷移する
最後にボタンタップ時にperformSegue
を実行します!
withSegueIdentifer
には前の手順で設定したSegue Identifier
を使います。
@IBAction func tapCautionButton(_ sender: UIButton) {
performSegue(withIdentifier: "showCaution", sender: nil)
}