2015-01-29 3 views
0

У меня есть UITabBarController с панелью вкладок (конечно), и я пытаюсь установить пользовательские изображения на вкладки на моей панели вкладок с помощью следующего кода:Невозможно установить значок панели вкладок IOS

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 


    UITabBar *menuTab = self.tabBarController.tabBar; 

    UIImage *friendImage = [UIImage imageNamed:@"[email protected]"]; 
    UIImage *friendImageSelected = [UIImage imageNamed:@"[email protected]"]; 

    UITabBarItem *friendItem = [menuTab.items objectAtIndex:1]; 
    [friendItem initWithTitle:@"Friends" image:friendImage selectedImage:friendImageSelected]; 

} 

в строке кода , я получаю предупреждение «Результат выражения не используется», и элемент табуляции не получает установленное изображение и текст.

Что я делаю неправильно?

ответ

1

Вы не можете получить доступ к изделиям в UITabBar таким образом. В принципе, как только создается UITabBarItem, он доступен только для чтения. (Единственное исключение из этого является badgeValue, selectedImage и названия позиционирования.)

Кроме того, вы получаете предупреждение вы потому, что init... метод возвращает значение, которое вы не используете. Вызов методов init... на существующем объекте просто неверен.

Вместо того, что вам нужно сделать, это что-то вроде этого:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    UIViewController *vc   = self.viewControllers[1]; 
    UIImage *friendImage   = [UIImage imageNamed:@"friends_tab"]; 
    UIImage *friendImageSelected = [UIImage imageNamed:@"friends_tab_selected"]; 
    UITabBarItem *friendItem  = [[UITabBarItem alloc] initWithTitle:@"Friends" image:friendImage selectedImage:friendImageSelected]; 
    vc.tabBarItem     = friendItem; 
} 

Обратите внимание, что я создаю полностью новый UITabBarItem. Когда у вас есть UITabBarController, у вас не может быть доступа к его UITabBar так же, как вы создаете и управляете собой. Поэтому вам необходимо получить доступ к свойству tabBarItem объекта UIViewController, который вы хотите изменить.

+0

Я только что пробовал ваш код, действительно имеет смысл, но по какой-то причине он не работает ... –

+0

UITabBar * menuTab = self.tabBarController.tabBar; Возвращает нуль ... который не может получить весь код ... Мне нужно найти другой способ доступа к нему –

+0

Какова ваша навигационная структура? Возможно, вам нужно сначала получить navigationController? – mbm29414

-1

Вы уже инициализировали элемент своего друга - он уже был сделан, и вы его извлекаете. Вы должны удалить initWithImage линию andchange название и изображение как свойства, например:

[friendItem setImage:@"myImage"]; 

и вы можете сделать то же самое для названия и выбранного изображения. Это работает?

+0

Объекты UITabBarItem не изменяются после создания. Пожалуйста, см. Мой ответ. – mbm29414

Смежные вопросы