【Swift3】ソースコード上から Storyboard 上に配置した ViewController にアクセスする
2016/11/20 修正 本文中のコードをSwift3対応に置き換えました
はじめに
本記事では Swift を使ってソースコード上から Storyboard 上に配置した ViewController にアクセスする方法を解説します。
ソースコードから Storyboard 上に配置した ViewController にアクセスする
1. 対象となる Storyboard をインスタンス化する
まず Storyboard を取得します。Storyboard のファイル名を指定して UIStoryboard クラスをインスタンス化します。
// 名前を指定して Storyboard を取得する(Main.storyboard の場合) let storyboard = UIStoryboard(name: "Main", bundle: nil)
2. Storyboard のインスタンスから ViewController を取得する
次にインスタンス化した Storyboard から ViewController を取得します。取得する方法は2つあります。まず、「is initial view controller」が設定されている ViewController を取得する方法から。UIStoryboard クラスの instantiateInitialViewControllerメソッドを使います。
// 「is initial view controller」が設定されている ViewController を取得する let viewController = storyboard.instantiateInitialViewController()
「is initial view controller」は名前の通り最初に表示される ViewController です。Storyboard 上で矢印マークが表示されていることで確認するか、ユーティリティエリアの attributes インスペクタで確認できます。
2つ目の方法が ViewController の Identity を指定する方法です。UIStoryboard クラスの instantiateViewControllerWithIdentifier メソッドで Storyboard 上で設定した StorybaordID を指定します。
// StorybaordID を指定して ViewController を取得する let viewController2 = storyboard.instantiateViewController(withIdentifier: "SecondVC")
まとめ
Storyboard 上に配置した ViewController は以下の手順でアクセスすることができます。
- Storyboard のインスタンスを取得する
- instantiateInitialViewController メソッド or instantiateViewControllerWithIdentifier メソッドで所望の ViewController を取得する