UITabBarController不显示tabbarItems名称

时间:2011-10-25 21:49:20

标签: iphone ios uitabbarcontroller uitabbaritem

我正在创建基于UTabbarController的应用程序。我以编程方式创建了该选项卡栏。一切都运行正常,除了我看不到tabBatItem标题。我已经正确地初始化了所有内容,但是当应用程序启动时,我可以看到的是第一个tabbar标题。但如果我选择第二个tabbaritem等,我可以看到他们的名字。我不知道这里出了什么问题。这是我的代码。如果我犯了任何错误,请告诉我。

感谢。

- (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];
navController1.title=@"Home";
[viewController1 release];

TrainerTableViewController *viewController2 = [[TrainerTableViewController alloc] initWithNibName:@"TrainerTableViewController" bundle:nil];
UINavigationController*navController2=[[UINavigationController alloc]initWithRootViewController:viewController2];
navController1.title=@"Trainer";
[viewController2 release];

SettingsTableViewController *viewController8 = [[[SettingsTableViewController alloc] initWithNibName:@"SettingsTableViewController" bundle:nil] autorelease];
UINavigationController*navController8=[[[UINavigationController alloc]initWithRootViewController:viewController8]autorelease];
navController1.title=@"Settings";

AboutUsViewController *viewController9 = [[[AboutUsViewController alloc] initWithNibName:@"AboutUsViewController" bundle:nil] autorelease];
UINavigationController*navController9=[[[UINavigationController alloc]initWithRootViewController:viewController9]autorelease];
navController1.title=@"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;
}

4 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:2)

解决此问题的最佳方法是设置viewController的title而不是navigationController

viewController1.tabBarItem.title = @"CohesiveSelf";

对所有标签执行此操作。

答案 2 :(得分:0)

您只需为navController1设置标题。对于您创建的每个nab控制器,您需要为该控制器设置标题。

试试这个:

CHANGE: navController1.title = @ “训练”; 至 navController2.title = @ “训练”;

CHANGE: navController1.title = @ “设置”; 至 navController8.title = @ “设定”;

CHANGE: navController1.title = @“关于我们”; 至 navController9.title = @“关于我们”;

也不是你没有发布会导致内存泄漏的navController8或9

答案 3 :(得分: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的标题设置为'Home',并将tabBar图标设置为名为'hometabicon.png'的文件。

您可以为其他每个标签重复相同的模式。