2010-11-18 3 views
3

Я пытаюсь изменить изображения моей вкладки в ViewController, но для отображения новых изображений я должен щелкнуть по каждому элементу панели вкладок.Обновить/Обновить элементы панели вкладок в ViewController?

for (CustomTabBarItem *myItem in self.tabBarController.tabBar.items){ 
     myItem.enabled = YES; 

     myItem.badgeValue = @"1"; 

     UIImage *myImage = [[UIImage alloc] initWithContentsOfFile:[[DesignManager sharedManager] getPathOfFile:@"test.png"]]; 

     *myItem.imageSelect= *myImage; // change images of each item. don't appear if I dont click on the item 
} 

Кто-нибудь знает, как я могу отображать непосредственно эти изображения? Спасибо

ответ

2

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

Самый простой способ сделать это - установить свойство tabBarItem контроллера вида, представленного данной вкладкой. Если вы хотите сделать это изнутри этого вида контроллера, просто написать:

self.tabBarItem = [[UITabBarItem alloc] initWithTitle: @"title" image: myImage: tag: nil]; 

Или, вы можете сделать это где-то еще, скажем, ваше приложение делегат:

UIViewController* vc = [tabBarController.viewControllers objectAtIndex: 3]; 
vc.tabBarItem = [[UITabBarItem alloc] initWithTitle: @"title" image: myImage: tag: nil]; 
+0

это работает! спасибо – blade196

2

Я знаю, что это старый вопрос. Я столкнулся с той же проблемой, когда мне нужно обновить значение значка с другой активной вкладки. Создание другого UITabBarItem решит вашу текущую проблему, но вызовет утечку памяти, когда этот код вызывается много раз. Кроме того, когда другие контролеры доступа получают доступ к вкладке, они не имеют ссылки на вновь созданный UITabBarItem. Мой фокус

vc.tabBarItem = vc.tabBarItem; 

Это работает для меня.

+0

большое вам спасибо. –

+0

не работает, ios 10 –