在此基础上标签导航栏的标题更改选择?(Change title of navbar based on

2019-09-03 18:49发布

我有一个iOS应用那里有一个导航控制器作为根控制器,但在一个部分存在一个标签栏在NAV条中的一个视图之间进行选择。 它看起来类似于iTunes的应用程序(在顶部导航栏,底部标签栏)。 我希望我的导航栏的标题更改基于选择哪个选项卡上。 我必须为每个标签两个独立控制的文件。 以下是我试图在每一个使用迄今为止解决这个问题无济于事:

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

如何更改基于按下该选项卡上的NavBar标题?

Answer 1:

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

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

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

这同样适用于B,C,等等。



Answer 2:

在你ViewControllers是在标签:

-(void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    self.tabBarController.title = self.title;
}


Answer 3:

如果个人视图控制器的标签栏控制器提出了有自己的导航栏,然后

[self setTitle:@"Foo"];

同时设置标签栏标签,以及导航栏标题。

如果导航控制器是在顶层(即标签栏是导航控制器内),那么你可能需要设置导航栏标题的手动(你会想这样做在viewDidAppear而不是viewDidLoad ,因为这些孩子控制器不重新加载每次开机时),例如:

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

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

或者,你可以在你做这个导航栏标题的调整UITabBarControllerDelegate方法didSelectViewController

如果不这样做,你可能需要澄清你的问题,说明控制器的分级(例如是导航栏,或反之亦然里面的标签栏控制器)。



Answer 4:

你也可以继承的的UITabBarController,委托设置本身,使用委托来设置它的标题选择视图控制器时:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
    //change the title based on viewController that is selected
    self.title = @"New title";
}


Answer 5:

仅仅两Code..Only事情台词是,你需要使用viewWillAppear中的方法

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

PS:从上面的答案启发......



Answer 6:

 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



文章来源: Change title of navbar based on which tab is selected?