Irohabook
Swift システム・環境

Swiftで画面遷移(push)はコード、遷移後の画面はストーリーボードで作る方法とよくあるエラー

広告

画面遷移そのものはストーリーボードを使わないが、画面はストーリーボードのオートレイアウトで作るという場合、いくつか注意点がある。

コード例:

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let v = storyboard.instantiateViewController(withIdentifier: "TestViewControllerID") as! TestViewController
rootViewController?.navigationController?.pushViewController(v, animated: true)

以下は上のコードの補足説明。

まずUIStoryboardのインスタンスを作る

引数のnameには、画面のストーリーボードのファイルを指定する。ただしstoryboardという拡張子はいらない。

ストーリーボードはだいたいMain.storyboardに入るが、プロジェクトが大きくなればstoryboardは自然に分割される。もし画面のストーリーボードがHotel.storyboardというファイルに入っているなら

let storyboard = UIStoryboard(name: "Hotel", bundle: nil)

となる。

instantiateViewControllerのwithIdentifierには、ストーリーボード上で設定したStoryboard IDを指定する

Storyboard IDを使うときは、必ずストーリーボード上でUse Storyboard IDにチェックをつける。

as!以降でViewControllerクラスを指定するが、これは単にUIViewControllerでかまわない。つまり

let v = storyboard.instantiateViewController(withIdentifier: "TestViewControllerID") as! UIViewController

でもいい。データの受け渡しをする場合は画面のクラス名を指定したほうがいい。

広告

コンピューター コンピューター
プログラミング プログラミング
数学 数学
英語 英語
国語 国語
理科 理科
社会 社会