当应用加载到我的应用委托中时,我无法初始化视图控制器。 viewcontroller加载正常,但它与我底部的tabbar重叠。我是否需要创建另一个viewcontroller并将其加载到app delegate中?我目前在我的MainWindow.xib中设置了一个tabBarController,它包含导航控制器,里面是viewControllers。
这是我的代码......
在我的didFinishLaunchingWithOptions中我有:
sub = [[SubGabViewController alloc] initWithNibName:@"SubGabViewController" bundle:nil];
nav = [[UINavigationController alloc] initWithRootViewController:sub];
[window addSubview:nav.view];
它应该是什么样的?
sub = [[SubGabViewController alloc] initWithNibName:@"SubGabViewController" bundle:nil];
nav = [[UINavigationController alloc] initWithRootViewController:sub];
[newViewController.view addSubview:nav.view];
谢谢!
答案 0 :(得分:1)
如果您正在尝试使用UITabBarController,则每个选项卡都有自己的根视图控制器(这些控制器甚至可以是UINavigationController对象)。假设你有self.tabBarController的属性(我认为如果你正在做一个标签栏应用程序,这默认是在Xcode中创建的),那么:
sub = [[SubGabViewController alloc] initWithNibName:@"SubGabViewContrller" bundle:nil];
nav = [[UINavigationContoller alloc] initWithRootViewController:sub];
[self.tabBarController setViewControllers:[NSArray arrayWithObject:nav] animated:NO];
self.window.rootViewController = self.tabBarController;
// Clean up memory here... only if you don't need references to them
[sub release];
[nav release];
使用setViewControllers:animated:您可能应该在NSArray中包含其他视图控制器,否则您最终会得到一个仅包含一个项目的标签栏!
答案 1 :(得分:0)
[window addSubview:tabBarController.view];
是对的......
不是使用代码添加导航控制器.....你应该从Interface Builder中添加....在界面构建器中删除tabBarItem
并在其上添加navigationController
然后设置{ {1}}用于该导航控制器..........
在viewController
中创建tabBarController
的插座,以便您可以在appDelegate
上添加。{1}}。请不要忘记在Interface Builder中建立组件之间的连接。
谢谢,