将标签与导航结合使用时的最佳做法

时间:2013-07-15 14:35:28

标签: iphone ios objective-c uitabbarcontroller uinavigationbar

我使用标签式应用程序模板来启动我的新iPhone项目 我将有4个标签 我想把导航栏放在顶部。
所以我在 AppDelegate

中添加了这个
UIViewController *viewController1 = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
    UIViewController *viewController2 = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];

    UINavigationController *navigationcontroller = [[UINavigationController alloc] initWithRootViewController:viewController1];

    self.tabBarController = [[UITabBarController alloc] init];
    self.tabBarController.viewControllers = [NSArray arrayWithObjects:navigationcontroller, viewController2, nil];

此添加的导航栏仅位于第一个ViewController(第一个选项卡)的顶部 我想要的是为整个应用程序添加导航栏,而不仅仅是在一个视图中 这将使我能够从一个视图跳转到另一个视图并返回选项卡 那么以编程方式为所有选项卡视图创建一个导航栏的最佳方法是什么?

更新
基本上我的主要问题是,我应该为所有观看一个导航栏每个标签应该有自己的导航栏? 什么是“iDevelopers”世界的最佳实践。

3 个答案:

答案 0 :(得分:1)

我宁愿让self.window.rootViewController成为navigationController,之后只需推动你的tabBarController或

NSMutableArray *viewControllers = [[NSMutableArray alloc] init];

// create someViewController
[viewControllers addObject:someView];
// create someViewController2
[viewControllers addObject:someView2];


UITabBarController *tabController = [[UITabBarController alloc] init];
[tabController setViewControllers:viewControllers];

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:tabController]
self.window.rootViewController = navController;

答案 1 :(得分:0)

如果您想在每个控制器上安装导航栏,您应该在UINavigationController的每个标签上都有UITabBarController 查看this问题的答案。

答案 2 :(得分:0)

您需要导航栏,您必须像在标签栏中为每个视图控制器一样添加UINavigationController。所以self.tabBarController.viewControllers将拥有所有导航控制器。

在没有用户干预的情况下切换标签并不是一个好主意。