Перезагрузить / Обновить вкладку Барные элементы в ViewController?
-
26-09-2019 - |
Вопрос
Я пытаюсь изменить изображения моего 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;
Меня устраивает.