Цель-C: Название элемента панели вкладок не изменится после страницы входа в систему, но будет работать при повторном запуске из xCode? - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть Change Language VC, который меняет язык приложения. Если я первоначально запустил приложение, зарегистрируйтесь и войдите в систему. Затем я сразу же перейду на change language VC и нажму change language method. Название элемента панели вкладок останется и не сработает. Пожалуйста, проверьте ссылку Пожалуйста, обратите внимание на заголовок элемента панели вкладок

Однако, если перезапустить приложение в xCode и оно находится на начальной странице или Home VC, а не со страницы входа в систему, и я перехожу к change language VC, все работает нормально. Пожалуйста, проверьте ссылку и Пожалуйста, обратите внимание на заголовок элемента панели вкладок

Всем гуру, пожалуйста, помогите мне, я хочу изменить заголовок панели вкладок. Спасибо.

StoryBoard

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

1 Ответ

0 голосов
/ 12 сентября 2018

В 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];

       [[self presentingViewController] dismissViewControllerAnimated:YES completion:nil]; //==== This is the line that is needed
    }
...