Storyboardを使う時に出てくるsegueについて調査しました。
segueとは
下図の矢印の事です。
私は画面遷移のオブジェクトと言う認識で覚えています。
segueの使い方
Action segueの使い方
一番簡単な方法はボタンを使った画面遷移です。
ボタンを右クリック、クリックしたまま他ビューControllerにドラッグする事でsegueを作る事ができます。
画面遷移はpush、modal、popover、replace、customの中から選択できます。
customの画面遷移は色々なものが作れそうで楽しそうですね。
このようにボタンを使ったsegueの事をAction segueと呼びます。
Manual segueの使い方
次にボタンを使わないsegue(Manual segue)について書きます。
ボタンを使わないsegueはボタンの代わりにViewControllerを右クリックしてsegueを生成します。
使うときは、最初に下図の通りsegue idを設定します。
その後コードからperformSegueWithIdentifier
を使う事で遷移をする事ができます。
self.performSegueWithIdentifier("SegueId", sender: self)
遷移先に値を渡す方法
遷移先に値を渡すためにはprepareForSegue
というメソッドを使います。
segueのdestinationViewController
というメソッドで遷移先を取得できるので、そこで値をセットします。
segueのIDを取得する事もできるので、複数の遷移がある場合はIDを使って分岐すると良いかと思います。
senderにはself.performSegueWithIdentifier
でセットした値、もしくはUIButton
が入っています。
segueのIDが一緒だけど渡す値を変えたい場合などはsenderを使うと良さそうですね。
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { let nextViewController = segue.destinationViewController as! ViewController nextViewController.value = 1 }
Unwind segue
Unwind segueの使い方
Unwind segueとは画面から戻る時に使うsegueです。
使い方ですが、最初に戻りたい先へ下記のような@IBAction
付きで引数がUIStoryboardSegue
のメソッドを用意します。
@IBAction func backWithSegue(let segue: UIStoryboardSegue) { NSLog("back") }
次に、戻り元のExitをを選択します。
すると右カラムのConnections inspector
に今作成したメソッドが出現するので、これを戻り元のボタンと紐付けます。
そうするとボタンを押した時に、戻り先画面に戻ると同時にbackWithSegue
が呼び出されます。
Unwind segueの良さそうな所
Unwind segue
ですが、2つ前の画面に戻ったりするのを比較的簡単に実現できそうな点が嬉しいです。
それと戻り先でsegueのIDを参照できるので、どこから戻ったかを判別できそうな点も嬉しいです。