2011-10-25 56 views
0

我正在創建基於UTabbarController的應用程序。我以編程方式創建了該標籤欄。一切運行良好,除非我看不到tabBatItem標題。我已經正確地初始化了所有東西,但是當應用程序啓動時,我可以看到的是第一個tabbar標題。但如果我選擇第二tabbaritem左右,我可以看到他們的名字。我不知道這裏出了什麼問題。這是我的代碼。如果我犯了任何錯誤,請告訴我。UITabBarController不顯示tabbarItems名稱

謝謝。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; 

    HomeViewController *viewController1 = [[HomeViewController alloc] initWithNibName:@"HomeViewController" bundle:nil]; 
UINavigationController*navController1=[[UINavigationController alloc]initWithRootViewController:viewController1]; 
[email protected]"Home"; 
[viewController1 release]; 

TrainerTableViewController *viewController2 = [[TrainerTableViewController alloc] initWithNibName:@"TrainerTableViewController" bundle:nil]; 
UINavigationController*navController2=[[UINavigationController alloc]initWithRootViewController:viewController2]; 
[email protected]"Trainer"; 
[viewController2 release]; 

SettingsTableViewController *viewController8 = [[[SettingsTableViewController alloc] initWithNibName:@"SettingsTableViewController" bundle:nil] autorelease]; 
UINavigationController*navController8=[[[UINavigationController alloc]initWithRootViewController:viewController8]autorelease]; 
[email protected]"Settings"; 

AboutUsViewController *viewController9 = [[[AboutUsViewController alloc] initWithNibName:@"AboutUsViewController" bundle:nil] autorelease]; 
UINavigationController*navController9=[[[UINavigationController alloc]initWithRootViewController:viewController9]autorelease]; 
[email protected]"About Us"; 


self.tabBarController = [[[UITabBarController alloc] init] autorelease]; 
self.tabBarController.viewControllers = [NSArray arrayWithObjects:navController1, navController2,navController8, navController9, nil]; 

[navController1 release]; 
[navController2 release]; 
self.window.rootViewController = self.tabBarController; 
[self.window makeKeyAndVisible]; 
return YES; 
} 

回答

3

您可以通過在每個標籤欄項目的視圖控制器的.m文件中包含以下代碼來完成此操作。該代碼還包括如何更改標籤欄上的圖像。

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization. 
     self.title = @"Apply Now"; 
     self.tabBarItem.image = [UIImage imageNamed:@"tbApplyNow.png"]; 
    } 
    return self; 
} 
+0

謝謝@Louie!你節省了我的一天.. +1的答案。但我有一個問題:爲什麼它只使用initWithNibName而不使用viewDidLoad? –

0

你只設置了標題navController1。對於您創建的每個控制器控制器,您需要爲該控制器設置標題。

試試這個:

CHANGE: navController1.title = @ 「培訓師」; TO navController2.title = @「Trainer」;

更改: navController1.title = @「設置」; TO navController8.title = @「設置」;

更改: navController1.title = @「關於我們」; TO navController9.title = @「關於我們」;

而且不是你不釋放navController8或9,這將導致內存泄漏

0

你實際上是設置標題爲NavigationControllers。另外,請注意您的代碼會多次設置navController1的標題,而不是爲其他人設置它。

您可以通過爲每個控制器設置tabBarItem來設置tabBar的標題。

您可以選擇繼承,也可以將其包含在AppDelegate的application:didFinishLaunchingWithOptions:方法中。

下面是一個例子:

UITabBarItem *tbi1 = [navController1 tabBarItem]; 
[tbi1 setTitle:@"Home"]; 

UIImage *i1 = [UIImage imageNamed:@"hometabicon.png"]; 
[tbi1 setImage:i1]; 

這將設置TAB1到「家」的稱號,並會使用TabBar圖標設置爲一個名爲「hometabicon.png」文件。

您可以爲每個其他選項卡重複相同的模式。

+0

非常感謝您的幫助。 – slonkar

2

解決這個問題的最好辦法是設置的viewController的標題不navigationController

viewController1.tabBarItem.title = @"CohesiveSelf"; 

這樣做對所有的選項卡。