在嵌入标签栏的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选择的优秀名称。国王赤身裸体。
答案 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?