iOS 7 - TabBarController 没有文本标签

Posted

技术标签:

【中文标题】iOS 7 - TabBarController 没有文本标签【英文标题】:iOS 7 - TabBarController does not have text label 【发布时间】:2014-03-16 05:42:09 【问题描述】:

我正在尝试使用UITabBarController 创建一个应用程序。我已经在线学习了几个教程,但我的 UITabBarController 没有文本,但您可以从一个视图切换到另一个视图,因此我似乎遗漏了一些东西。

这是我的didFinishWithLaunchingOptions 函数:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.

    self.tabController = [[UITabBarController alloc] init];
 
    UIViewController *viewController1 = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
    ListViewController *listVC = [[ListViewController alloc] initWithStyle:UITableViewStylePlain];

    self.tabController.viewControllers = [[NSArray alloc] initWithObjects:viewController1, listVC, nil];

    self.window.rootViewController = self.tabController;

    [self.window makeKeyAndVisible];
    [self createCopyOfDatabaseIfNeeded];

    return YES;

我错过了什么?

【问题讨论】:

【参考方案1】:

您需要设置每个视图控制器的标签栏图像和标题:

self.tabController = [[UITabBarController alloc] init];

UIViewController *viewController1 = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
ListViewController *listVC = [[ListViewController alloc] initWithStyle:UITableViewStylePlain];

viewController1.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"VC1" image:[UIImage imageNamed:@"tab_ yourViewController.png"] tag:0];
listVC.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"listVC" image:[UIImage imageNamed:@"tab_listvc.png"] tag:1];

self.tabController.viewControllers = [[NSArray alloc] initWithObjects:viewController1, listVC, nil];

也可以(并且通常首选)为viewDidLoad 中的每个视图控制器设置 tabBarItem,即:

- (void)viewDidLoad

    [super viewDidLoad]; // Be a good citizen!
    self.tabBarItem = [[UITabBarItem alloc] init...];
    ...

【讨论】:

我个人认为每个视图控制器设置自己的标题和图像会更好。我在每个视图控制器的viewDidLoad 方法(或init 方法)中执行此操作。但无论哪种方式都有效。【参考方案2】:

您可以使用代码为每个视图设置标签栏项

UITabBar *tabBar = self. tabController.tabBar;
UITabBarItem *tabBarItem0 = [tabBar.items objectAtIndex:0];
UITabBarItem *tabBarItem1 = [tabBar.items objectAtIndex:1];

[tabBarItem0 setTitle:@"title1"];
[tabBarItem0 setImage:[UIImage imageNamed:@"img1"]];
[tabBarItem1 setTitle:@"title2"];
[tabBarItem1 setImage:[UIImage imageNamed:@"img2"]];

self.window.rootViewController = self.tabController;

[self.window makeKeyAndVisible];

【讨论】:

以上是关于iOS 7 - TabBarController 没有文本标签的主要内容,如果未能解决你的问题,请参考以下文章

iOS 自定义TabBarController zhuanzai

iOS TabBarController 只显示黑屏

iOS 自定义TabBarController

iOS:CYLTabBarController低耦合集成TabBarController

iOS 项目架构tabbarController 嵌套 navbarController

IOS8 SplitVC + TabBarController + NavigationController