Установить заголовок панели вкладок программно при запуске для 5 элементов панели вкладок, 4 из которых встроены в контроллер навигации, 1 нет. Цель С - PullRequest
0 голосов
/ 30 апреля 2018

Как установить заголовок панели вкладок при запуске или AppDelegates. У меня есть 5 Tab Bar Item, 4 из которых встроены в Navigation Controller, а 1 - вне и просто tab bar item. Пожалуйста, смотрите следующую картинку

Pic

Обновлено на 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";
     }

1 Ответ

0 голосов
/ 30 апреля 2018

Любой UIViewController имеет это свойство tabBarItem, поскольку является расширением UIViewController, поэтому вам нужно только получить свой viewController и установить его tabBarItem.title property = "your wantedTitle"

UPDATE

Код 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

если вы хотите вызвать этот метод из любого места в вашем коде, вы должны

  1. импортируйте ваш AppDelegate.h в .m, где вы хотите его использовать
  2. добавьте этот метод в ваш AppDelegate.h, чтобы сделать этот метод общедоступным
  3. вызвать этот метод так:

Код

   [(AppDelegate*)[UIApplication sharedApplication].delegate setupTabBar];

enter image description here

...