Лучший способ обновить badgeValue UITabBarController из UIView - PullRequest
11 голосов
/ 18 мая 2010

У меня есть tabBarController, настроенный в AppDelegate, и у меня есть несколько UIViewController с Nav Controllers. В одном из элементов TabBar, после того как я нажал несколько UIViews, я хочу обновить элемент badgeValue другого элемента TabBar.

Какой лучший способ сделать это? Единственный способ, которым я могу по-настоящему думать, - это NSNotification и одноэлементное хранилище для значения, но, кажется, много работы для чего-то простого, и я понятия не имею о NSNotifications.

У меня была дикая догадка о чем-то вроде super.tabBarController.otherView.tabBarItem.badgeValue = @ "1" (когда я определяю, какая вкладка выбрана подобным образом), но я не удивлен, что это не работает.

Спасибо

Ответы [ 3 ]

36 голосов
/ 18 мая 2010

Благодаря alku83, который указал мне правильное направление, код:

[[super.tabBarController.viewControllers objectAtIndex:2] tabBarItem].badgeValue = @"1";
6 голосов
/ 29 сентября 2012

Я использую Xcode 4.5 с раскадровками и iOS 6, поэтому ответ, возможно, изменился с момента его первоначальной публикации.

Сначала вы должны получить доступ к контроллеру панели вкладок следующим образом:

UITabBarController *tabController = (UITabBarController *)self.window.rootViewController;

Тогда вы можете установить значок так:

[[tabController.viewControllers objectAtIndex:1] tabBarItem].badgeValue = @"New!";
0 голосов
/ 18 мая 2010

У меня сейчас нет кода под рукой, но это должно быть что-то вроде

...otherViewController.tabBarItem.badgeValue = 1;
...