У меня есть Change Language VC
, который меняет язык приложения.
Если я первоначально запустил приложение, зарегистрируйтесь и войдите в систему. Затем я сразу же перейду на change language VC
и нажму change language method
. Название элемента панели вкладок останется и не сработает. Пожалуйста, проверьте ссылку Пожалуйста, обратите внимание на заголовок элемента панели вкладок
Однако, если перезапустить приложение в xCode и оно находится на начальной странице или Home VC
, а не со страницы входа в систему, и я перехожу к change language VC
, все работает нормально. Пожалуйста, проверьте ссылку и Пожалуйста, обратите внимание на заголовок элемента панели вкладок
Всем гуру, пожалуйста, помогите мне, я хочу изменить заголовок панели вкладок. Спасибо.
StoryBoard
Localized.cn.strings
"Home" = "主页";
"News" = "新闻";
"Class" = "课程";
"Gym" = "健身房";
"More" = "更多";
"CHANGE LANGUAGE" = "更改语言";
LoginVC
- (void)dismissLoginAndShowProfile {
AppDelegate *authObj = (AppDelegate*)[[UIApplication sharedApplication] delegate];
authObj.authenticated = YES;
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UITabBarController *tabView = [storyboard instantiateViewControllerWithIdentifier:@"profileView"];
tabView.selectedIndex=0; //=== This is to choose which Tab, starts with 0,1,2,3,4
[self presentViewController:tabView animated:YES completion:nil];
}
AppsDelegate.m (AppsDelegate вызовет таблицу about и, соответственно, получит название)
+ (NSString*)getCurrentLang {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *sLanguage = [defaults objectForKey:@"txtLanguage"];
if(sLanguage == nil) {
return @"EN";
}else{
return sLanguage;
}
}
//=== This method will getCurrentLang and concatanate with Localizable_cn or en
+ (NSString*)getLocalizedTableName {
return [NSString stringWithFormat:@"Localizable_%@",[[self getCurrentLang]lowercaseString]];
}
//=== This method will call getLocalizedTableName,
+ (NSString*)getLocalizedText:(NSString*)toLocalize {
return NSLocalizedStringFromTable(toLocalize, [AppDelegate getLocalizedTableName], @"");
}
//=== Change Language VC will call the following method
//=== the Method will can getLocatlizedText method and pass @"Home" to it
- (void)setupTabBar {
UITabBarController * tabBarController = (UITabBarController*)[self.window rootViewController];
if(tabBarController != nil) {
((UIViewController*)[tabBarController.viewControllers objectAtIndex:0]).tabBarItem.title = [AppDelegate getLocalizedText:@"Home"];
((UIViewController*)[tabBarController.viewControllers objectAtIndex:1]).tabBarItem.title = [AppDelegate getLocalizedText:@"News"];
((UIViewController*)[tabBarController.viewControllers objectAtIndex:2]).tabBarItem.title = [AppDelegate getLocalizedText:@"Class"];
((UIViewController*)[tabBarController.viewControllers objectAtIndex:3]).tabBarItem.title = [AppDelegate getLocalizedText:@"Gym"];
((UIViewController*)[tabBarController.viewControllers objectAtIndex:4]).tabBarItem.title = [AppDelegate getLocalizedText:@"More"];
}
}
ProfileChgLang.m (я показываю только кнопку «Изменить на китайский метод кнопки»)
- (IBAction)btnChinese:(id)sender {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@"CN" forKey:@"txtLanguage"];
[(AppDelegate*)[UIApplication sharedApplication].delegate setupTabBar];
UINavigationController *navigationController = self.navigationController;
[navigationController popViewControllerAnimated:YES];
}