Установите значок элемента панели вкладок после загрузки панели вкладок в Swift 4 - PullRequest
0 голосов
/ 30 января 2019

Цель состоит в том, чтобы установить значок для одного элемента панели вкладок, но только когда вызывается какая-то другая логика в другом месте приложения.Прямо сейчас у меня есть класс MainNavigationController, расширяющий UITabBarController, здесь настроена панель вкладок.В MainNavigationController у меня также есть открытая функция, как показано ниже

func setBadge() {
    print("setting Badge")

    self.tabBar.items?[1].badgeValue = "1"

}

Когда я вызываю эту функцию из другого места, где в приложении используется MainNavigationController (). SetBadge (), выполняется оператор print, но элемент tabBar вИндекс 1 не обновляется со значком.Как я могу получить значок этого значка для показа?

РЕДАКТИРОВАТЬ Решение на основе комментария @Robert Dresler.Проблема была в том, что у меня не было доступа к правильному экземпляру MainNavigationController ...

 let rootView = UIApplication.shared.keyWindow?.rootViewController as? BaseViewController
 let tabBarView = rootView?.centralViewController as? MainNavigationController
 tabBarView!.setBadge()

Ответы [ 2 ]

0 голосов
/ 30 января 2019

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

0 голосов
/ 30 января 2019

Попробуйте код ниже

if let tabbar = self.tabBarController as? MainNavigationController {
        tabbar.setBadge()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...