我有一个名为 DashBoardViewController 的 UIViewController,它充当 UITabBar 的委托。在它的 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 中的视图控制器始终按预期工作,将其扩展到 w 视图的完整大小。但是,在第二个和随后的选项卡中,这不会发生:视图不会扩展。这表明,例如,如果我将一个选项卡与 ViewController2 XIB 中的底部对齐:当在 UITabBarItem 内查看时,它不会位于底部。
注意 请注意,这与 XIB 无关:如果我反转 ViewController1 和 ViewController2,它将是 ViewController1 未能扩展的那个。它与 UITabBarItem 相关。
想法 可能,这取决于我在调用 DashBoardViewController 的 initWithNibName 时 addSubview 的方式。但我找不到解释这个的方法。
其他细节 所有 XIB 均设置为“Size = none”。