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

时间:2016-04-12 19:17:10

标签: uinavigationbar uitabbar

我创建了一个带有4个自定义标签栏项目的标签栏控制器。我想在两个标签栏视图控制器中添加导航栏(只有标题的简单横幅)。 这就是我做的。 让我们说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];

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

我该怎么做才能解决这个问题?我只想要一个带标题的简单导航栏。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

因此,不要使用标签栏的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

中所述
  

如果未设置自定义标题视图,导航栏将显示包含视图控制器默认标题的标签。此标签的字符串通常从视图控制器本身的title属性中获取。如果要显示与视图控制器关联的标题不同的标题,请改为设置视图控制器导航项的title属性。