状況
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