Как установить значок панели вкладок iPhone в код?

Я использую тот же ViewController для нескольких разных представлений.

При создании экземпляра ViewController для определенного вида есть ли простой способ указать значок панели вкладок через код?

Ответы

Ответ 1

yourViewController.tabBarItem = [[UITabBarItem alloc]
initWithTitle:NSLocalizedString(@"Name", @"Name")
image:[UIImage imageNamed:@"tab_ yourViewController.png"]
tag:3];

Элементы viewControllers добавляются на панель вкладок, поэтому изображение и имена должны быть установлены до того, как панель вкладок станет видимой (appDelegate, если они есть, например, в начале приложения). После этого вы можете использовать приведенный выше код, чтобы изменить значок и текст из loadView или viewDidAppear внутри этого viewController.

Ответ 2

Да. Ваш UITabBar имеет свойство items, которое представляет собой массив UITabBarItem для каждого элемента панели табуляции. Вы можете создать UITabBarItem с помощью конструктора –initWithTitle:image:tag: для использования своего собственного изображения или конструктора –initWithTabBarSystemItem:tag: для использования образа системы.

Ответ 3

Вы также можете сделать это в AppDelegate, объявив iVar UITabBarController и указав его на приложение tabBarController. Вы можете получить доступ к отдельным записям с помощью массива items. и setTitle.

@synthesize tabBarController;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.
    self.tabBarController = (UITabBarController*)self.window.rootViewController;
    NSArray* items = [self.tabBarController.tabBar items];
    [[items objectAtIndex:0] setTitle:@"Home"];
    [[items objectAtIndex:1] setTitle:@"Cool"];
    [[items objectAtIndex:2] setTitle:@"Stuff"];
    [[items objectAtIndex:3] setTitle:@"Settings"];
    return YES;
}

Ответ 4

Правильный способ: добавить эту строку ниже в viewDidLoad

    [self.tabBarItem setImage:[UIImage imageNamed:@"<Image Name>"]];

для просмотра контроллеров, установленных внутри UITabBarController