2017-06-12 53 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?