しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

segueについて調査 (Storyboard)

Storyboardを使う時に出てくるsegueについて調査しました。

segueとは

下図の矢印の事です。
私は画面遷移のオブジェクトと言う認識で覚えています。
f:id:llcc:20150526233257p:plain

segueの使い方

Action segueの使い方

一番簡単な方法はボタンを使った画面遷移です。
ボタンを右クリック、クリックしたまま他ビューControllerにドラッグする事でsegueを作る事ができます。
画面遷移はpush、modal、popover、replace、customの中から選択できます。
customの画面遷移は色々なものが作れそうで楽しそうですね。
このようにボタンを使ったsegueの事をAction segueと呼びます。

f:id:llcc:20150526234206p:plain

Manual segueの使い方

次にボタンを使わないsegue(Manual segue)について書きます。
ボタンを使わないsegueはボタンの代わりにViewControllerを右クリックしてsegueを生成します。
使うときは、最初に下図の通りsegue idを設定します。

f:id:llcc:20150526234638p:plain

その後コードから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に今作成したメソッドが出現するので、これを戻り元のボタンと紐付けます。
f:id:llcc:20150527002124p:plain

そうするとボタンを押した時に、戻り先画面に戻ると同時にbackWithSegueが呼び出されます。

Unwind segueの良さそうな所

Unwind segueですが、2つ前の画面に戻ったりするのを比較的簡単に実現できそうな点が嬉しいです。
それと戻り先でsegueのIDを参照できるので、どこから戻ったかを判別できそうな点も嬉しいです。