Ответ 1
Спасибо alku83, который указал мне в правильном направлении код:
[[super.tabBarController.viewControllers objectAtIndex:2] tabBarItem].badgeValue = @"1";
У меня есть tabBarController, настроенный в AppDelegate, и у вас есть несколько UIViewControllers с Nav Controllers. В одном из элементов TabBar после того, как я нажал несколько UIViews, я хочу обновить элемент badgeValue другого элемента TabBar.
Каков наилучший способ сделать это? Единственный способ, которым я действительно могу думать, это NSNotification и одноэлементное хранилище для этой ценности, но, похоже, много работы для чего-то простого, и я понятия не имею о NSNotifications.
У меня было дикое предположение о чем-то вроде super.tabBarController.otherView.tabBarItem.badgeValue = @ "1" (поскольку я установил, какая вкладка выбрана аналогичным образом), но я не удивлен, что это не работает.
Спасибо
Спасибо alku83, который указал мне в правильном направлении код:
[[super.tabBarController.viewControllers objectAtIndex:2] tabBarItem].badgeValue = @"1";
Я использую Xcode 4.5 со Storiesboards и iOS 6, поэтому ответ, возможно, изменился с момента его первоначальной публикации.
Сначала вам нужно получить доступ к контроллеру панели табуляции, как это:
UITabBarController *tabController = (UITabBarController *)self.window.rootViewController;
Затем вы можете установить значок так:
[[tabController.viewControllers objectAtIndex:1] tabBarItem].badgeValue = @"New!";
У меня нет кода под рукой прямо сейчас, но он должен быть чем-то более похож на
...otherViewController.tabBarItem.badgeValue = 1;