我有一个iOS应用那里有一个导航控制器作为根控制器,但在一个部分存在一个标签栏在NAV条中的一个视图之间进行选择。 它看起来类似于iTunes的应用程序(在顶部导航栏,底部标签栏)。 我希望我的导航栏的标题更改基于选择哪个选项卡上。 我必须为每个标签两个独立控制的文件。 以下是我试图在每一个使用迄今为止解决这个问题无济于事:
self.navigationItem.title = @"Title";
self.navigationController.navigationItem.title = @"title";
[self.navigationController setTitle:@"Live"];
[self setTitle:@"Top Title"];
如何更改基于按下该选项卡上的NavBar标题?
您更改当前正在显示在视图控制器栏的标题。
因此,例如,在你的选项卡控制器显示视图控制器A,您可以添加:
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:YES];
[self setTitle:@"A"];
self.tabBarController.navigationItem.title = @"A";
}
这同样适用于B,C,等等。
在你ViewControllers是在标签:
-(void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
self.tabBarController.title = self.title;
}
如果个人视图控制器的标签栏控制器提出了有自己的导航栏,然后
[self setTitle:@"Foo"];
同时设置标签栏标签,以及导航栏标题。
如果导航控制器是在顶层(即标签栏是导航控制器内),那么你可能需要设置导航栏标题的手动(你会想这样做在viewDidAppear
而不是viewDidLoad
,因为这些孩子控制器不重新加载每次开机时),例如:
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[self.navigationController.navigationBar.topItem setTitle:@"Foo"];
}
或者,你可以在你做这个导航栏标题的调整UITabBarControllerDelegate
方法didSelectViewController
。
如果不这样做,你可能需要澄清你的问题,说明控制器的分级(例如是导航栏,或反之亦然里面的标签栏控制器)。
你也可以继承的的UITabBarController,委托设置本身,使用委托来设置它的标题选择视图控制器时:
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
//change the title based on viewController that is selected
self.title = @"New title";
}
仅仅两Code..Only事情台词是,你需要使用viewWillAppear中的方法
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
self.tabBarController.navigationItem.title = @"Your Title";
}
PS:从上面的答案启发......
UITabBarController *tabController = (UITabBarController *)self.parentViewController;
tabController.navigationItem.title = @"ABC";
这是为我工作
从互联网上的一些R&d
你必须通过navigationItem环比上涨。 该UINavigationController的展示属于其topViewController是的UITabBarController的navigationItem。 该的UITabBarController显示其标签的navigationItem冠军。 所以,你需要做的是确保该tabBarController的navigationItem是它的selectedViewController的navigationItem
因此,要回顾一下:
UINavigationController的标题= topViewController.navigationItem.title
的UITabBarController tabTitle = selectedViewController.navigationItem.title
UIViewController的标题= navigationItem.title