Перезагрузить / Обновить вкладку Барные элементы в ViewController?

StackOverflow https://stackoverflow.com/questions/4216179

Вопрос

Я пытаюсь изменить изображения моего Tabbar в 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
}

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

Это было полезно?

Решение

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

Самый простой способ сделать это, это установить свойство 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];

Другие советы

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

vc.tabBarItem = vc.tabBarItem; 

Меня устраивает.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top