想在标签栏视图控制器中添加一个简单的导航栏

Posted

技术标签:

【中文标题】想在标签栏视图控制器中添加一个简单的导航栏【英文标题】:want to add a simple navigation bar in tab bar view controller 【发布时间】:2016-04-12 19:17:09 【问题描述】:

我创建了一个带有 4 个自定义标签栏项目的标签栏控制器。我想将导航栏(上面只有标题的简单横幅)添加到 2 个标签栏视图控制器。 这就是我所做的。 假设 4 个标签栏视图控制器是 vc1、vc2、vc3、vc4。 我在文件 vc1ViewController.m 下的 viewDidLoad() 中添加了一些代码

UINavigationBar *navBar = [[UINavigationBar alloc] init];
navBar.barStyle = UIBarStyleBlack;
navBar.topItem.title = @"News";
UINavigationItem *title = [[UINavigationItem alloc]initWithTitle:@"news"];
[self.view addSubview:navBar];

我稍后也会添加一个tableview

[self.view addSubview:self.tv];

当我运行应用程序时,表格可以显示,但导航栏不存在。

我能做些什么来解决它?我只想要一个带有标题的简单导航栏。

【问题讨论】:

谢谢大家。我试图将导航栏拖到其中一个 xib 文件中,它出现了。所以我想也许我也可以通过代码添加一个导航栏。看来我错了。 【参考方案1】:

您必须创建一个 UINavigationController(这是一个特殊的 ViewController 并为选项卡设置它。)这将为您创建导航栏。 (https://developer.apple.com/library/ios/documentation/UIKit/Reference/UINavigationController_Class/)

【讨论】:

谢谢伙计。还有一个问题,我将视图控制器更改为 UINavigationController。导航栏显示。现在我通过在 nav1.m "self.navigationBar.topItem.title = @"news";" 下的 viewDidLoad() 中添加这个简单的代码来添加标题没有出现标题【参考方案2】:

您必须将标签栏的视图控制器设置为包含所需视图控制器的导航控制器。

所以标签栏不要使用vc1、vc2、vc3、vc4,而是使用如下所示的nav1、nav2、nav3、nav4:

 UINavigationController *nav1 = [[UINavigationController alloc] initWithRootViewController:vc1];
 UINavigationController *nav2 = [[UINavigationController alloc] initWithRootViewController:vc2];
 UINavigationController *nav3 = [[UINavigationController alloc] initWithRootViewController:vc3];
 UINavigationController *nav4 = [[UINavigationController alloc] initWithRootViewController:vc4];

您可以从那里设置标题:

[vc1 setTitle:@"title1"];
[vc2 setTitle:@"title2"];
[vc3 setTitle:@"title3"];
[vc4 setTitle:@"title4"];

如UINavigationController Docs中所述:

如果没有设置自定义标题视图,导航栏会显示一个包含视图控制器默认标题的标签。这个标签的字符串通常是从视图控制器本身的标题属性中获得的。如果要显示与视图控制器关联的标题不同的标题,请设置视图控制器导航项的标题属性。

【讨论】:

谢谢伙计。还有一个问题,我将视图控制器更改为 UINavigationController。导航栏显示。现在我通过在 nav1.m "self.navigationBar.topItem.title = @"news";" 下的 viewDidLoad() 中添加这个简单的代码来添加标题没有出现标题 感谢您的回答,但仍然没有显示标题。我还阅读了 UINavigationController 文档。很有趣。

以上是关于想在标签栏视图控制器中添加一个简单的导航栏的主要内容,如果未能解决你的问题,请参考以下文章

如何将选项卡栏添加到默认视图并使用导航控制器与其他视图通信

导航不起作用

使用swift在选项卡式视图中的导航栏上添加按钮

所有标签栏控制器的栏按钮

如何使用 swift 在子视图中添加标签栏和导航栏?

将标签栏添加到导航控制器