iOS: 选项卡被选中前的选项卡栏项目标题

iOS: Tab bar item title before the tab is selected

在iOS9中,显示在选项卡中的视图控制器负责它的tabBarItem。但是标签栏控制器只在需要时为每个标签加载视图控制器。所以最初,它只加载选项卡 1 的视图控制器(如果应用程序在第一个选项卡上启动)。因此,除非您为故事板中的每个选项卡项设置标题,否则只有第一个选项卡显示标题,因为它是当时唯一加载的视图控制器,而其余选项卡仅显示其图标(我正在通过情节提要,因为图标不需要本地化)。

如何在不通过情节提要的情况下为所有选项卡设置标题?

你可以把所有的标题放到数组中,预设tabBarItem个标题:

if let tabTitles = self.tabBarController?.tabBar.items as? [UITabBarItem]
    {
        tabTitles[0].title = "Messages"
        tabTitles[1].title = "Contacts"
    }

尝试下面的代码希望这对你有帮助

// MyTabBarController.h

#import <UIKit/UIKit.h>
@interface MyTabBarController : UITabBarController
@end

// MyTabBarController.m

#import "MyTabBarController.h"
@interface MyTabBarController ()

@end

@implementation MyTabBarController

- (void)viewDidLoad {[super viewDidLoad];
[self customizedTabbar];
}
-(void)customizedTabbar
{
 UITabBar *tabBar = self.tabBar;
UITabBarItem *item0 = [tabBar.items objectAtIndex:0];
UITabBarItem *item1 = [tabBar.items objectAtIndex:1];

UIImage *img1= [[UIImage imageNamed:@"t1"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

UIImage * img1_sel= [[UIImage imageNamed:@"t1_sel"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

   UIImage *img2= [[UIImage imageNamed:@"t2"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

UIImage *img2_sel= [[UIImage imageNamed:@"t2_sel"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

 item0 = [item0 initWithTitle:@"Tab1" image:img1 selectedImage:img1_sel];

item1 = [item1 initWithTitle:@"Tab2" image:imag2 selectedImage:img2_sel];
 }

谢谢