【Swift】Segueを使わない画面遷移

はじめに

Swiftでiosアプリ開発を勉強しているのですが、 Segueを使わないで画面遷移する方法を勉強したのでメモします。

初期設定

xcode version

今回は ver10を用いました。

ファイル構成

f:id:jesushill:20181021161629p:plain

上記の写真のように以下のようなフォルダ構成にします。

  • StoryBoard

    • Initial
    • Next
  • Contoroller

    • InitialViewController
    • NextViewController

それぞれの名前に対応したStoryBoardとControllerが対応する形としています。 (例えば、InitialViewControllerなら StoryBoardのInialに対応)

Info.plistの設定

通常、Single View appなど、Xcodeで新規プロジェクト作成をした場合、 エントリーポイントが初期設定 Main になるので、下記のキャプチャにある通り、 Main storyboard file base nameInitial を参照するよう、修正を行いました。

f:id:jesushill:20181021161825p:plain

初期画面

以下のボタンを設定しました。

f:id:jesushill:20181021163003p:plain

このボタンを押せば次の画面へ遷移する仕組みを今回は記述しました。

プログラム

画面に設定したボタンを押したら、画面遷移をするように 以下のようなプログラムを設定しました。

class InitialViewController: UIViewController {
   # 略

   @IBAction func didTouchNextButton(_ sender: Any) {
        let storyboard = UIStoryboard(name: "Initial", bundle: nil)
        let viewController = storyboard.instantiateViewController(withIdentifier: "next")

        self.present(viewController, animated: true, completion: nil)
    }
}

画面遷移先のInitialには対応するInitialViewControllerを紐づけ、Storyboard IDに next と設定すれば完了です。

ネットでググってみると、画面遷移先のコントローラーを指定した以下の記述 let viewController = storyboard.instantiateViewController(withIdentifier: "next")as! NextVIewController と型変換を入れている人もいますが、指定した先が対応していれば、 書かなくても大丈夫です。