はじめに
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)
}