2014-02-25 68 views
3

我試圖以編程方式製作UITabBarController。這似乎工作,我有2個選項卡,它沒有顯示第一次加載時RootViewController中的第二個標籤標題的問題。怎麼來的?UITabBarController不顯示其他標籤的標題

這是當RootViewController的加載:

enter image description here

當我點擊在那裏是沒有標題的第二個選項卡,標題顯示:

enter image description here

當我回去第二個標籤標題仍然存在:

enter image description here

我的問題是爲什麼當RootViewController加載時不顯示。

我在didFinishLaunchingWithOptions的appDelegate方法:

tabBarController = [[UITabBarController alloc] init]; 

MenuViewController *firstTab = [[MenuViewController alloc] initWithNibName:@"MenuViewController" bundle:nil]; 
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:firstTab]; 


FixtureViewController *secondTab = [[FixtureViewController alloc] initWithNibName:@"FixtureViewController" bundle:nil]; 
UINavigationController *navController2 = [[UINavigationController alloc] initWithRootViewController:secondTab]; 


self.tabBarController = [[UITabBarController alloc] init]; 
self.tabBarController.viewControllers = @[navController, navController2]; 

[self.window setRootViewController:tabBarController]; 
+0

你什麼時候在每個視圖控制器中設置'title'? 'viewDidLoad'?將其設置爲'init'。 – Wain

回答

0

添加標題視圖控制器:

firstTab.title = @"Title to display 1"; 
secondTab.title = @"Title to display 2"; 
+1

viewControllers應該設置自己的標題。恕我直言,這是不好的編碼風格設置在父viewController的viewControllers屬性 –

+0

@der_michael你如何將標題傳遞給子VC呢?如果邏輯(例如設置了什麼標題)在父項中,則必須使用屬性並將數據從父項傳遞給子項。 – Greg

+0

這取決於你的邏輯,但標籤欄控件上的標題很少動態,以至於必須從包含的視圖控制器之外進行設置......我只在視圖控制器上設置了一個延遲加載的uinavigation項目,它將標題。 –

0

你應該設置的TabBar稱號initialize方法,不ViewDidLoadviewDidAppear ..

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     self.tabBarItem.title = @"Tabbar Title"; 
    } 
    return self; 
} 
0

取代assi在RootViewController中指定title屬性,你應該覆蓋第一個/第二個viewController的tabBarItem屬性。您可以將其加載到...

如果您在viewDidLoad()覆蓋中設置title屬性,則直到視圖控制器實際上被加載並實際調用viewDidLoad()時纔會應用它。您可以通過設置斷點來檢查自己,無論您設置標題/ tabBarItem。