2015年10月14日水曜日

Storyboardで作ったViewControllerをコードで表示

Storyboardで作ったViewContollerをSegueじゃなくコードから表示しようとして以下をやったんだけど、画面が真っ黒になってうまくいかない。
調べたところ、どうやらこれではStoryboardで作ったファイルと結びつかないSecondViewControllerクラスができるだけらしい。

    let vc = SecondViewController()
    self.presentViewController(vc, animated: true, completion: nil)


そこでこうしたらできた。
        let vc: SecondViewController = self.storyboard!.instantiateViewControllerWithIdentifier"SecondView" ) asSecondViewController
    self.presentViewController(vc, animated: true, completion: nil)

もしくは
    let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("SecondView") as! SecondViewController
    self.presentViewController(vc, animated: true, completion: nil)

"SecondView"はStoryboardのIdentity InspectorのStoryboard IDにあらかじめ入力しておく。
下のコードで"Main"はStoryboardの名前。
通常Main.Storyboardって名前になってるので、拡張子を取ったMain。

これで晴れてStoryboardでグラフィカルなエディタで作ったViewControllerを表示できるのだね。
変数vcにはSecondViewControllerのプロパティやメソッドもあるので、それを操作してやることもできる。

むろん、画面上のインターフェース部品などをコードで全部書くつもりなら最初のやり方でもうまくいくと思う。

普段Segueばかり便利に使ってるから戸惑った。

0 件のコメント:

コメントを投稿