状況
Youtubeチャンネルの素材用にTinderの模擬アプリを作成する際、
TabBarControllerを使ったのですが
やり方が色々あってこんがらがったのと、いくつかつまづいたのでメモ。
やりたいこと
TabBarControllerをStoryboardReferenceを利用して導入する
->StoryboardをTabBarController, 遷移先のVC(Tabの数ぶんStoryboardを用意 or 遷移先を1つのStoryboardにまとめる)でそれぞれ分けたいのでStoryboardReferenceを利用
->遷移先のVCにNavigationControllerを継承させたい
対策
-
TabBarController.storyboardを新しく作る->TabBarControllerを新しく作って、つながっている2つのVCを消しておく -
StoryboardReferenceをTabの数だけ作る - 各々の
StoryboardReferenceをTabと紐付けたい遷移先のVCと紐付ける - TabBarControllerの
is initial viewcontrollerにチェックを入れる -
TARGETのMain interfaceをTabBarControllerが存在するstoryboardに設定 -
info.pistのStoryboard NameをTabBarControllerが存在するstoryboardに設定 - 以上を行ってもTabが表示されない場合はcleanや再起動諸々を試す(info.plistとかをいじるとcleanとかで解決するパターンが結構あるらしい。僕自身もcleanして解決しました。)
※一番左のタブから順々に紐づいていく
- 遷移先のVCごとにStoryboardがある場合:
StoryboardReferenceを選択しShow the Attributes inspector->Storyboard reference->StoryboardにStoryboardの名前(ファイル名)を入力(Storyboard IDではない)
- 遷移先のVCを1つのStoryboardにまとめている場合:
上記に加えて、VCをStoryboard IDから参照が必要->Show the Identity inspector->Identity->Storyboard IDに入力
- control+右クリックで各々の
StoryboardReferenceに繋ぐ->Relationship Segueのview controllersを選択
(※Modalなどではない) - 遷移先のVCで
Is Initial Viewcontrollerの設定を確認(NCが紐づいているならそちらに設定する) - 遷移先のVCで
Is Initial Viewcontrollerに設定したものにTabBar Itemを挿入
以上。
参考
・[Xcode7] 「Unknown class xxxxx in Interface Builder file.」が出る - Qiita