【Swift】Segueを使わない画面遷移
はじめに
Swiftでiosアプリ開発を勉強しているのですが、 Segueを使わないで画面遷移する方法を勉強したのでメモします。
初期設定
xcode version
今回は ver10を用いました。
ファイル構成
上記の写真のように以下のようなフォルダ構成にします。
StoryBoard
- Initial
- Next
Contoroller
- InitialViewController
- NextViewController
それぞれの名前に対応したStoryBoardとControllerが対応する形としています。 (例えば、InitialViewControllerなら StoryBoardのInialに対応)
Info.plistの設定
通常、Single View appなど、Xcodeで新規プロジェクト作成をした場合、
エントリーポイントが初期設定 Main
になるので、下記のキャプチャにある通り、
Main storyboard file base name
を Initial
を参照するよう、修正を行いました。
初期画面
以下のボタンを設定しました。
このボタンを押せば次の画面へ遷移する仕組みを今回は記述しました。
プログラム
画面に設定したボタンを押したら、画面遷移をするように 以下のようなプログラムを設定しました。
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
と型変換を入れている人もいますが、指定した先が対応していれば、
書かなくても大丈夫です。