在UITabBarController中以编程方式设置标题

时间:2014-03-29 04:51:13

标签: ios objective-c uitabbarcontroller uitabbar uitabbaritem

使用UITabBarController,我面临以下问题。 我希望在每个选项卡中都有一个给定的字符串作为所有视图控制器的标题。显然无法在storyboard

中进行设置

通过搜索网络,我发现了这个几乎可以解决的问题。将以下类型的代码放在每个单独的视图控制器中。

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    UITabBarItem *tabBarItem;
    tabBarItem=[[UITabBarItem alloc] initWithTitle:nil
                                             image:[self imageFromText:@"My Tab Title"
                                                              withFont:[UIFont systemFontOfSize:17.0]] tag:0];
    self.tabBarItem=tabBarItem;
}

问题是:只有当用户点击了所有标签时,所有标题才会设置为我想要的标题。

这当然不是一个好的永久解决方案。我需要在应用程序启动时正确显示所有标题。

任何人都知道如何做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以在 AppDelegate 中更改它。

e.g。如果你有3 TabBarIcons

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
   UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;

    [[tabBarController.viewControllers objectAtIndex:0] setTitle:@"Your "];
    [[tabBarController.viewControllers objectAtIndex:1] setTitle:@"title "];
    [[tabBarController.viewControllers objectAtIndex:2] setTitle:@"here"];

    [[[tabBarController.viewControllers objectAtIndex:0] tabBarItem] setImage:[[UIImage imageNamed:@"first"] imageWithRenderingMode:UIImageRenderingModeAutomatic]];
    [[[tabBarController.viewControllers objectAtIndex:1] tabBarItem] setImage:[[UIImage imageNamed:@"second"] imageWithRenderingMode:UIImageRenderingModeAutomatic]];
    [[[tabBarController.viewControllers objectAtIndex:2] tabBarItem] setImage:[[UIImage imageNamed:@"third"] imageWithRenderingMode:UIImageRenderingModeAutomatic]];

    return YES;
}