Storyboardで作ったViewContollerをSegueじゃなくコードから表示しようとして以下をやったんだけど、画面が真っ黒になってうまくいかない。
調べたところ、どうやらこれではStoryboardで作ったファイルと結びつかないSecondViewControllerクラスができるだけらしい。
let vc = SecondViewController()
self.presentViewController(vc, animated: true, completion: nil)
そこでこうしたらできた。
let vc: SecondViewController = self.storyboard!.instantiateViewControllerWithIdentifier( "SecondView" ) as! SecondViewController
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。
下のコードで"Main"はStoryboardの名前。
通常Main.Storyboardって名前になってるので、拡張子を取ったMain。
これで晴れてStoryboardでグラフィカルなエディタで作ったViewControllerを表示できるのだね。
変数vcにはSecondViewControllerのプロパティやメソッドもあるので、それを操作してやることもできる。
変数vcにはSecondViewControllerのプロパティやメソッドもあるので、それを操作してやることもできる。
むろん、画面上のインターフェース部品などをコードで全部書くつもりなら最初のやり方でもうまくいくと思う。
普段Segueばかり便利に使ってるから戸惑った。
0 件のコメント:
コメントを投稿