无法在选项卡中的 VC 中设置导航栏标题
Can't set navbar title in a VC that's in a tab
在嵌入标签栏的 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。国王全裸
如果您的层次结构是 NavController->TabBarController->ViewController 那么它将不起作用;如果直接嵌入,视图控制器的标题将显示在导航控制器的导航栏中。但在你的情况下,导航控制器显示标签栏控制器并尝试显示它的标题(不存在)。
通常使用另一个层次结构:将导航控制器嵌入到标签栏控制器中,然后视图控制器的标题将显示在导航控制器的导航栏中。
如果您做不到,您可以在每次在标签栏中切换页面时更改标签栏控制器的标题。
超级黑客是设置包含标签栏的控制器
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?
在嵌入标签栏的 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。国王全裸
如果您的层次结构是 NavController->TabBarController->ViewController 那么它将不起作用;如果直接嵌入,视图控制器的标题将显示在导航控制器的导航栏中。但在你的情况下,导航控制器显示标签栏控制器并尝试显示它的标题(不存在)。
通常使用另一个层次结构:将导航控制器嵌入到标签栏控制器中,然后视图控制器的标题将显示在导航控制器的导航栏中。
如果您做不到,您可以在每次在标签栏中切换页面时更改标签栏控制器的标题。
超级黑客是设置包含标签栏的控制器 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?