带导航栏的 TabBarController

Posted

技术标签:

【中文标题】带导航栏的 TabBarController【英文标题】:TabBarController with NavigationBar 【发布时间】:2012-01-12 11:34:20 【问题描述】:

我正在编写一个在底部使用 UITabBarController 的应用程序。

层次结构

- 第 1 页 - - 子页面 1 - - 子页面 2 - - 子页面 3 - 第2页 - 第 3 页

第 1 页包含一个包含多个项目的网格,选中后将显示所选子页面。 在子页面上,我将 TabBarController 的选项卡替换为所有子页面,并希望在导航栏中显示反向链接。

我以编程方式创建 tabBar。 目前我用 tabBarController 作为 rootViewController 来初始化 navigationController。 这似乎可行,但我无法更改 NavigationBar 上的任何内容,设置标题无效,按钮不出现。

我做错了什么? 还是有更好的方法来实现我想要的?

我将 ios5 与 ARC 结合(仅限 iPad)

【问题讨论】:

【参考方案1】:

您通过设置子导航控制器的标题来设置父导航控制器的标题。您需要设置标签栏控制器的标题:

myTabBarController.title = @"Page 1";

您还可以在子视图中设置导航栏的按钮,因为导航栏的内容取决于当前可见视图:

UIBarButtonItem *myItem = [[UIBarButtonItem alloc] initWithTitle:@"back" style:UIBarButtonItemStylePlain target:self action:@selector(myBackAction:)];
myTabBarController.navigationItem.leftBarButtonItem = myItem;

请记住,在点击项目后更改标签栏的内容被认为是糟糕的用户体验。可能还有其他更好的方法可以达到相同的效果。

【讨论】:

谢谢,它有效。我在内容区域的点击中更改了 tabBar,而不是 tabBar 本身。

以上是关于带导航栏的 TabBarController的主要内容,如果未能解决你的问题,请参考以下文章

关于导航栏的问题

无法识别导航栏的图像视图上的触摸。?

容器或导航栏的垂直空间

原来Toolbar还能这么用?Toolbar使用最全解析。网友:终于不用老是自定义标题栏啦!

带弹性的导航栏

系统方向学习总结2--Android 10.0 SystemUI默认去掉底部导航栏的三种方法