同じ/異なるStoryboardでの画面遷移

  • 58
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

下記の2つのStoryboard (Main, Another) と、それに紐付く3つのViewControllerがあったとして、ViewController1 から ViewController2 への同じStoryboard内での画面遷移と、ViewController2 から ViewController3 への異なるStoryboardでの画面遷移の方法をまとめます。

  • Main.storyboard
    • ViewController1 (Initial View Controller)
    • ViewController2
  • Another.storyboard
    • ViewController3 (Initial View Controller)

同じStoryboard内での遷移

Main内の ViewController1 から ViewController2 に遷移。

Segueを利用する

ユーザ側のアクションで遷移させたい場合 (例: ボタンをタップしたら遷移)

Storyboard上で、ViewController1 の UIButton などから ViewController2 にSegueを繋ぐ (のみでOK)。

sc.png

アプリ側で画面遷移を制御したい場合 (例: データを受信したら遷移)

1) Storyboard上で、ViewController1 の View Controller から ViewController2 にSegueを繋ぐ。
2) Segueの名前を設定。

sc2b.png

3) 遷移させたい場面で下記のコードを記載。

ViewController1.swift
performSegueWithIdentifier("screenTransition", sender: self)

Segueを使用しない

遷移させたい場面で下記のコードを記載。

ViewController1.swift
let next: UIViewController = storyboard.instantiateViewControllerWithIdentifier("ViewController2") as! UIViewController
presentViewController(next, animated: true, completion: nil)

異なるStoryboardへの遷移

Main内の ViewController2 から Another内の ViewController3 に遷移。

ViewController2.swift
let storyboard: UIStoryboard = UIStoryboard(name: "Another", bundle: nil)
let next: UIViewController = storyboard.instantiateInitialViewController() as! UIViewController
presentViewController(next, animated: true, completion: nil)

ViewController3 が Another.storyboard の Initial View Controller に設定されていれば、コントローラ名の明記は不要。

sc3.png