Storyboard/xib から生成した ViewController を NavigationController 下にホストする


Storyboard/xib から NavigationController にホストされた ViewController を作りたい場合、Storyboard 上で先に NavigationController をホストする方法もありますが、この場合、自分で作った ViewController に変数を渡したい時が面倒です。

・Storyboard 上で NavigationController にホストされた ViewController の例

そこで、Storyboard 上には Navigation Controller を生成せず、コードで NavigationController を追加します。

・ViewController のみを定義

let vc = UIStoryboard(name: "Main", bundle:nil).instantiateViewControllerWithIdentifier("storyboardId") as! UIViewController
vc.some_variable = xxx // ここで変数を渡す
let navigationVC = UINavigationController(rootViewController: newsVC) // navigation controller にホストさせる

これで NavigationController にホストされた ViewController に変数を渡しやすくなりました。

おまけ - 生成した ViewController を Tab の一部にする

この生成した NavigationController を Tab の一部にしたい場合、 tabBarItem を設定してあげると Tab 中にアイコン・名称が表示されるようになります。

vc.tabBarItem = UITabBarItem(title: "ニュース", image: UIImage(named: "News"), tag: 0)

このように表示されるようになります。