さるへい備忘録

さるへいのやったことを綴っているブログです。基本的にテクノロジーの話題です。

swiftとsegueで画面遷移のやりかた

iOSの開発で誰しもが困るポイント「画面遷移」

segueを使って実装したらかなり楽でした。 以下のようなやりかたで実現できます。

1. 遷移先のView Controller作成

storyboardからView Controllerをもう一つ作成しましょう

2. 遷移元のView Controllerと遷移先のView Controllerをsegueで接続

Ctrl + ドラッグで繋げられます。
僕は個人的に左の欄からつなげるのが好きです。(名前をよく知らない)
画面を直接ドラッグでひもづけるとうまくView Controllerを触れない僕がいました。 f:id:saruhei1989:20150906135517p:plain

そうすると、以下の表示がでて、遷移のアニメーションを選択できるのでどれかを選びましょう。 僕は個人的にshowが好きです。 f:id:saruhei1989:20150906135916p:plain

そうすると、以下のようにsegueで接続されます。 f:id:saruhei1989:20150906140028p:plain

segueには、identifierを登録しましょう。遷移の際に必要になります。 f:id:saruhei1989:20150906140244p:plain

3. 遷移のコードを記述します。

遷移元のView Controllerに以下のコードを記述すると、遷移が実行されます。
遷移させたいタイミングで記述しましょう。

//identifierを記述するところには、先ほど登録したsegueのidentifierを記述する
performSegue(withIdentifier: "seguetest", sender: self)

また、遷移する際になにか処理をさせたい場合には、以下のコールバックメソッドにて処理を記述できます。

override func prepare(segue: UIStoryboardSegue, sender: Any?) {
    // 処理を実行したいsegueを指定
    if segue.identifier == "seguetest"{
        //遷移先のインスタンスをsegueから取り出す
        let nextViewController: hogehogeViewController = segue.destinationViewController as! hogehogeViewController
        //ここでいろいろ処理みたいなことをする
    }
}

上記メソッドは、各View Controllerに一つしか書けないので、複数のsegue遷移がある場合は、if文などでsegueのidentifierを指定すると良いでしょう。

やはりstoryboardは優秀ですね。(こなみかん

追記 2019/03/12 swiftの文法が変わっていたので最新のものに修正