2016-07-19 115 views
0

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

如何在不通过故事板的情况下为所有选项卡设置标题?

回答

1

你可以把所有的标题为阵列,并预设tabBarItem标题:

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

太棒了!这工作,谢谢! – RyJ

0

试试下面的代码,希望这可以帮助您

// 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]; 
} 

谢谢