在iOS 9中,标签中显示的视图控制器负责其tabBarItem
。但是,标签栏控制器只会根据需要为每个标签加载视图控制器。所以最初,它只加载标签1的视图控制器(如果应用程序在第一个标签上启动)。因此,除非您为故事板中的每个选项卡项目设置标题,否则只有第一个选项卡会显示标题,因为它是当时唯一加载的视图控制器,而其他标签只显示其图标(我正在通过故事板因为图标不需要本地化)。iOS:选中标签前的标签栏项目标题
如何在不通过故事板的情况下为所有选项卡设置标题?
在iOS 9中,标签中显示的视图控制器负责其tabBarItem
。但是,标签栏控制器只会根据需要为每个标签加载视图控制器。所以最初,它只加载标签1的视图控制器(如果应用程序在第一个标签上启动)。因此,除非您为故事板中的每个选项卡项目设置标题,否则只有第一个选项卡会显示标题,因为它是当时唯一加载的视图控制器,而其他标签只显示其图标(我正在通过故事板因为图标不需要本地化)。iOS:选中标签前的标签栏项目标题
如何在不通过故事板的情况下为所有选项卡设置标题?
你可以把所有的标题为阵列,并预设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];
}
谢谢
太棒了!这工作,谢谢! – RyJ