无法在选项卡中的VC中设置导航栏标题

时间:2017-06-12 12:01:11

标签: ios uikit ios10.2

在嵌入标签栏的VC中,我这样做:

- (void)viewDidLoad
{
    self.title = LS(@"Choose a soundtrack");
    self.tabBarItem.title = LS(@"Music"); // self.title would not fit into tab 

    [super viewDidLoad];

我希望self.title能够渗透到导航栏和制表符中 它最终以tabbaritem结束(这就是我必须恢复的原因 它就在它之后。)

但它没有出现在导航栏中。 同样,self.navigationItem.title设置没有效果。

同样self.navigationController.title = LS(@“选择配乐”); 没有效果。

如果重要的话,tabbar被推入导航控制器,如下所示:

UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"TabbedStory" bundle:[MediaManager mediaBundle]];
SixTabViewController *stvc = [storyBoard instantiateInitialViewController];
[self.navigationController pushViewController:stvc animated:YES];

请注意我为tabbar vc选择的优秀名称。国王赤身裸体。

2 个答案:

答案 0 :(得分:1)

如果你的层次结构是NavController-> TabBarController-> ViewController那么它就不会工作;视图控制器的标题显示在导航控制器的导航栏中,只要它直接嵌入即可。但在你的情况下,导航控制器显示标签栏控制器并尝试显示它的标题(不存在)。

通常使用另一个层次结构:将导航控制器嵌入到标签栏控制器中,然后查看控制器的标题将显示在导航控制器的导航栏中。

如果您无法做到这一点,则每次在标签栏中切换页面时都可以更改标签栏控制器的标题。

答案 1 :(得分:0)

超级黑客是要设置包含的tabbar控制器 navigationItem标题如下:

-(void)prepareForIndex:(NSUInteger)i
{
...
switch(i) {
    case 2:
        self.navigationItem.title = LS(@"Choose a soundtrack");
}
}

-(void)setSelectedIndex:(NSUInteger)i
{
[self prepareForIndex:i];
[super setSelectedIndex:i];
}

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
    [self prepareForIndex:self.selectedIndex];
}

线索在这里: Why does UICollectionView log an error when the cells are fullscreen?

相关问题