2017-06-12 52 views
0

在VC多数民众赞成嵌入的TabBar我这样做:无法设置导航栏标题的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(@“Choose a soundtrack”); 没有效果。

在该事项的TabBar情况下被推到导航控制器,像这样:

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

注意的出色名我选了VC的TabBar。国王是赤裸裸的。

+0

使用self.navigationController.title = “你的标题”而不是设置VC的标题。 – dip

+0

看起来像你的VC在事实上是第一次嵌入导航控制器,它嵌入到标签栏控制器...如果你澄清你的视图控制器的层次结构并附上截图,会很好。 – Varrry

+0

Tabbar控制器被推入navstack。有问题的VC代表Tabbar中的一个选项卡。 –

回答

1

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

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

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

+0

对,谢谢。我没有在tabbar的每个页面单独的navstacks,所以我最终与建议的黑客 –

0

的superugly破解是有包含的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?