9

我有一个 iOS 应用程序,其中有一个导航控制器作为根控制器,但有一个选项卡栏可以在其中一个导航栏中的视图之间进行选择。它看起来类似于 iTunes 应用程序(顶部的导航栏,底部的标签栏)。我希望导航栏的标题根据选择的选项卡进行更改。每个选项卡都有两个单独的控制器文件。到目前为止,这是我尝试在每种方法中使用的方法来解决此问题,但无济于事:

self.navigationItem.title = @"Title";
self.navigationController.navigationItem.title = @"title";
[self.navigationController setTitle:@"Live"];    
[self setTitle:@"Top Title"];

如何根据按下的选项卡更改导航栏标题?

4

6 回答 6

19

当前显示的视图控制器中更改栏的标题。

因此,例如,在您在选项卡控制器中显示的视图控制器 A 中,您可以添加:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:YES];
    [self setTitle:@"A"];
    self.tabBarController.navigationItem.title = @"A";
}

B、C等也一样。

于 2013-05-16T15:49:48.830 回答
3

在选项卡中的 ViewControllers 中:

-(void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    self.tabBarController.title = self.title;
}
于 2013-05-16T16:01:51.073 回答
2

如果标签栏控制器呈现的各个视图控制器都有自己的导航栏,那么

[self setTitle:@"Foo"];

将设置标签栏标签以及导航栏标题。

如果导航控制器位于顶层(即标签栏位于导航控制器内部),那么您可能必须手动设置导航栏标题(并且您需要在viewDidAppear而不是中执行此操作viewDidLoad,因为这些子控制器是每次切换时都不会重新加载),例如:

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    [self.navigationController.navigationBar.topItem setTitle:@"Foo"];
}

或者,您可以在您的UITabBarControllerDelegate方法中进行此导航栏标题调整didSelectViewController

如果这不这样做,您可能需要澄清您的问题,描述控制器的层次结构(例如,导航栏中的标签栏控制器,反之亦然)。

于 2013-05-16T16:04:54.713 回答
1

只需两行代码..唯一的事情是,您需要使用viewWillAppear方法

-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    self.tabBarController.navigationItem.title = @"Your Title";
}

PS:灵感来自以上答案...

于 2013-09-25T14:40:52.967 回答
1

您可以继承 UITabBarController,将委托设置为自身,并在选择视图控制器时使用委托设置其标题:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
    //change the title based on viewController that is selected
    self.title = @"New title";
}
于 2013-05-16T16:06:03.760 回答
0
 UITabBarController *tabController = (UITabBarController *)self.parentViewController;

 tabController.navigationItem.title = @"ABC";

这对我有用

来自互联网上的一些研发

您必须将 navigationItem 向上传递。UINavigationController 显示属于其 topViewController 的导航项,即 UITabBarController。UITabBarController 在其选项卡中显示 navigationItem 标题。所以你需要做的是确保tabBarController的navigationItem是selectedViewController的navigationItem

回顾一下:

UINavigationController 标题 = topViewController.navigationItem.title

UITabBarController tabTitle = selectedViewController.navigationItem.title

UIViewController 标题 = navigationItem.title

于 2016-10-12T07:01:25.200 回答