2011-01-18 3 views
2

Я работаю с tabBar Основанное приложение с контроллером навигации. В моем приложении я хочу изменить tabBarItem image и title. Во время щелчка по парикуляру tabBarItem управление переходит к методу viewWillAppear этого конкретного вида. В это время я хочу изменить image и titletabBarItem.Как изменить изображение TabBarItem и заголовок-вопрос

Я даю, как это, но это не работает ...

Код:

tabItem = [[UITabBarItem alloc] initWithTitle:@"Colors" image:[UIImage imageNamed:@"Colors.png"] tag:9]; 

self.tabBarController.tabBarItem = tabItem; 

Уже я устанавливаю tag value для этой точки зрения является 9.

Пожалуйста, помогите мне, как я могу изменить image и title этого конкретного tabbarItem.

+0

Пожалуйста, кто может дать какое-то решение, чтобы сделать это ... Спасибо – kanmani

ответ

5

Существует небольшое заблуждение в том, что вы пытаетесь сделать. Прежде всего, UITabBarController не имеет свойства tabBarItem, которое вы пытаетесь установить. Но даже если это так, то UITabBarController документы конкретно указывается, в отношении имущества TabBar UITabBarController в:

Вы никогда не должны пытаться манипулировать объект UITabBar сам хранящуюся в этом свойстве. Если вы попытаетесь сделать это, представление панели вкладок выдает исключение.

Таким образом, способ модификации элементов является не через сам UITabBar. В вашей ситуации UITabBar получает UITabBarItems из UIViewControllers, представленного каждой вкладкой. Это то, что вы контролируете. В частности, то, что вы можете сделать, это:

- (void)viewWillAppear:(BOOL)animated { 
    /* Modifies the UITabBarItem used by a UITabBarController to represent this 
    * UIViewController in the tab bar. 
    */ 

    UITabBarItem* tabBarItem = [[UITabBarItem alloc] initWithTitle:@"Colors" image:[UIImage imageNamed:@"Colors.png"] tag:9]; 
    self.tabBarItem = tabBarItem; 
    [tabBarItem release]; 
} 
+0

Hai Matt Уайлдинг, \t \t \t TabItem = [[UITabBarItem Alloc] initWithTitle: @ "Цвета". image: [UIImage imageNamed: @ "Colors.png"] tag: 9]; \t \t self.navigationController.tabBarItem = tabItem; \t [tabItem release]; Вышеприведенный код работает для всех tabbaritem (с навигационным контроллером), за исключением одного tabbaritem. Как я могу решить эту проблему ... пожалуйста, помогите мне сделать это ... Спасибо – kanmani

+0

Вам нужно указать какой-то контекст здесь ... Что отличается от этого? Если он представляет собой контроллер представления другого класса, чем другой, вам также нужно будет поместить в него этот код ... –

+0

Вы имели в виду это, self.tabBarItem.title = @ "MyTitile"; не будет работать? Действительно, он не работает в моем случае. Это правило API? Но новый элемент панели вкладок отлично работает. – karim

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