在启动时以编程方式为 5 个选项卡栏项目设置选项卡栏标题,其中 4 个嵌入在导航控制器中,1 个不是。 Objective C
Set Tab Bar title programatically at Startup for 5 Tab Bar item, 4 of which is embedded in Navigation Controller, 1 is not. Objective C
如何在启动时设置标签栏标题或AppDelegates
。我有 5 个 Tab Bar Item
,其中 4 个嵌入 Navigation Controller
,1 个没有嵌入 tab bar item
。请看下图
已更新 VC 调用方法
#import "AppDelegate.h"
@interface ProfileChgLang (){
AppDelegate *appDelegate;
NSString *sLanguage;
}
- (IBAction)btnChinese:(id)sender {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@"CN" forKey:@"txtLanguage"];
[(AppDelegate*)[UIApplication sharedApplication].delegate setupTabBar];
//UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
//==== Is the following correct? =====
UITabBarController * tabBarController = (UITabBarController*)[[[UIApplication sharedApplication] keyWindow] rootViewController];
[self presentViewController:tabBarController animated:YES completion:nil];
}
//====================================
应用委托更新
- (void)setupTabBar {
//===Should be this
UITabBarController * tabBarController = (UITabBarController*)[self.window rootViewController];
//===Or this
UITabBarController * tabBarController = (UITabBarController*)[[[UIApplication sharedApplication] keyWindow] rootViewController];
if(tabBarController != nil) {
((UIViewController*)[tabBarController.viewControllers objectAtIndex:1]).tabBarItem.title = @"Your desired Title";
}
任何 UIViewController
都有这个 属性 tabBarItem
因为它是 UIViewController
的扩展所以你只需要得到你的 viewController 并设置他的 tabBarItem.title
属性="your desiredTitle"
更新
Objective-C代码
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[self setupTabBar];
// Override point for customization after application launch.
return YES;
}
- (void)setupTabBar {
UITabBarController * tabBarController = (UITabBarController*)[self.window rootViewController];
if(tabBarController != nil) {
((UIViewController*)[tabBarController.viewControllers objectAtIndex:3]).tabBarItem.title = @"YourDesiredTitle";
}
}
Swift代码
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
//Whatever you have here
self.setupTabBar()
return true
}
func setupTabBar() {
if let tabBarController = self.window?.rootViewController as? UITabBarController {
if let navigationsControllers = tabBarController.viewControllers as? [UIViewController] {
navigationsControllers[3].tabBarItem.title = "YourTitle"
}
}
}
更新#2
如果您想从代码中的任何位置调用此方法,您必须
- 将您的 AppDelegate.h 导入到您要使用它的 .m 文件中
- 在您的 AppDelegate.h 中添加此方法,以便使此方法 public
- 像这样调用这个方法:
代码
[(AppDelegate*)[UIApplication sharedApplication].delegate setupTabBar];
如何在启动时设置标签栏标题或AppDelegates
。我有 5 个 Tab Bar Item
,其中 4 个嵌入 Navigation Controller
,1 个没有嵌入 tab bar item
。请看下图
已更新 VC 调用方法
#import "AppDelegate.h"
@interface ProfileChgLang (){
AppDelegate *appDelegate;
NSString *sLanguage;
}
- (IBAction)btnChinese:(id)sender {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@"CN" forKey:@"txtLanguage"];
[(AppDelegate*)[UIApplication sharedApplication].delegate setupTabBar];
//UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
//==== Is the following correct? =====
UITabBarController * tabBarController = (UITabBarController*)[[[UIApplication sharedApplication] keyWindow] rootViewController];
[self presentViewController:tabBarController animated:YES completion:nil];
}
//====================================
应用委托更新
- (void)setupTabBar {
//===Should be this
UITabBarController * tabBarController = (UITabBarController*)[self.window rootViewController];
//===Or this
UITabBarController * tabBarController = (UITabBarController*)[[[UIApplication sharedApplication] keyWindow] rootViewController];
if(tabBarController != nil) {
((UIViewController*)[tabBarController.viewControllers objectAtIndex:1]).tabBarItem.title = @"Your desired Title";
}
任何 UIViewController
都有这个 属性 tabBarItem
因为它是 UIViewController
的扩展所以你只需要得到你的 viewController 并设置他的 tabBarItem.title
属性="your desiredTitle"
更新
Objective-C代码
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[self setupTabBar];
// Override point for customization after application launch.
return YES;
}
- (void)setupTabBar {
UITabBarController * tabBarController = (UITabBarController*)[self.window rootViewController];
if(tabBarController != nil) {
((UIViewController*)[tabBarController.viewControllers objectAtIndex:3]).tabBarItem.title = @"YourDesiredTitle";
}
}
Swift代码
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
//Whatever you have here
self.setupTabBar()
return true
}
func setupTabBar() {
if let tabBarController = self.window?.rootViewController as? UITabBarController {
if let navigationsControllers = tabBarController.viewControllers as? [UIViewController] {
navigationsControllers[3].tabBarItem.title = "YourTitle"
}
}
}
更新#2
如果您想从代码中的任何位置调用此方法,您必须
- 将您的 AppDelegate.h 导入到您要使用它的 .m 文件中
- 在您的 AppDelegate.h 中添加此方法,以便使此方法 public
- 像这样调用这个方法:
代码
[(AppDelegate*)[UIApplication sharedApplication].delegate setupTabBar];