Перезагрузить / обновить элементы панели вкладок в ViewController? - PullRequest
3 голосов
/ 18 ноября 2010

Я пытаюсь изменить изображения моей вкладки в 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 ]

2 голосов
/ 12 марта 2015

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

vc.tabBarItem = vc.tabBarItem; 

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

2 голосов
/ 18 ноября 2010

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

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