UITabBar のデリゲートとして機能する DashBoardViewController という UIViewController があります。そのxibに、3つのUITabBarItemを持つUITabBarを配置しました。
これらの各項目は、異なるビュー コントローラーをアクティブにします。それらを ViewController1、ViewController2、ViewController3 と呼びましょう。
DashBoardViewController は ViewController1 を表示し、読み込み時に最初のバーを選択することになっているため、initWithNibName には次のようなものがあります。
...
ViewController1* vc = [[ViewController1 alloc] initWithNibName:@"ViewController1" bundle:nil];
[self.view addSubview:vc.view];
self.currentViewController = vc;
...
次のような UITabBarDelegate を実装します。
if (item == viewController1Item) {
ViewController2 *vc2 = [self.childrenControllers objectAtIndex:1];
[self.currentViewController.view removeFromSuperview];
[self.view addSubview:vc2.view];
self.currentViewController = vc2;
} ...
問題 最初の UITabBarItem のビュー コントローラーは常に期待どおりに動作し、ビューのフル サイズに拡張されます。ただし、2 番目以降のタブでは、これは発生しません。ビューは拡張されません。これは、たとえば、ViewController2 XIB でタブを下部に揃えるかどうかを示しています。これは、UITabBarItem 内で表示すると下部に表示されません。
注 これは XIB とは関係ないことに注意してください。ViewController1 と ViewController2 を逆にすると、拡張に失敗した ViewController1 になります。UITabBarItem に関連しています。
アイデア おそらく、これは、DashBoardViewController の initWithNibName を呼び出すときに Subview を追加する方法によって異なります。しかし、これを説明する方法が見つかりません。
その他の詳細 すべての XIB は「Size = none」で設定されています。