Swiftで遊ぼう! - 208 - ルートビューのコード
Swiftで遊ぼう!の古い記事-> Life-LOG OtherSide
2015年5月13日:編集
-
-
- -
-
やっとコーディングに入りますが、今の私はコーディングの話になると深い霧の中に彷徨い込んでしまっています。
手探りで触れるものが何なのか感覚だけを頼りにしている状態ですね。
ということで私の解釈はまるで見当違いかもしれませんが、間違っていてもご了承ください。
XcodeでSwitchingViewControllerクラスを生成すると自動的に繋がっている(ルート)Viewは存在します。
アプリを立ち上げた時にblueViewControllerとその(青い)Viewを表示させていくのが今回の目的です。
SwitchingViewControllerに組み込むコードですが、アプリが立ち上がる時に呼ばれるメソッドに書き込みます。
上記リンクで説明しているようにアプリが立ち上がった時に呼ばれるメソッドは「viewDidLoad()」です。
次のコードをviewDidLoad()内に加えます。
override func viewDidLoad() { super.viewDidLoad() blueViewController = storyboard?.instantiateViewControllerWithIdentifier("Blue") as? BlueViewController blueViewController.view.frame = view.frame switchViewController(from: nil, to: blueViewController) }
注意:キャスティングの扱いがSwift1.2で変更になっていると思います。オリジナルの説明で「as」を使っていましたが、私は「as?」に変更しました。
最初のコードから見ていきます。
blueViewController = storyboard?.instantiateViewControllerWithIdentifier("Blue") as? BlueViewController
これを紐解いていくと、
blueViewControllerは、BlueViewControllerクラスのオプショナル型のインスタンスで、SwitchingViewControllerクラス内にプロパティとしてprivate宣言されています。
instantiateViewControllerWIthIdentifierの働きはUIViewControllerクラスのインスタンス化です。
as? BluewBiewControllerが無いと、その上位クラスのUIViewControllerクラスのインスタンス化になりますが、キャスティングすることで継承クラスのBlueViewControllerクラスのオプショナル型のインスタンス化ができます。
storyboardに「?」が付いているけど、UIViewControllerクラスのDocumentを調べてみよう。
ちゃっとプロパティvar storyboard: UIStoryboard? {get} ってありましたよね。
という事でstoryboardの前に「?」がついてオプショナルチェインとして処理して、sotryboardがnilで無ければ、「"Blue"」というIdentifierを付けたBlueViewControllerクラスのオプショナル型のインスタンス化ができます。
今日はここまで。