从UIView更新UITabBarController的badgeValue的最佳方法

Rud*_*ger 12 iphone uitabbarcontroller nsnotifications uiview

我在AppDelegate中设置了tabBarController,并且有一些带有Nav Controllers的UIViewControllers.在其中一个TabBar项目中,在我推送了几个UIViews后,我想更新另一个TabBar项目的badgeValue项目.

什么是最好的方法呢?我能想到的唯一方法就是NSNotification和单值存储的价值,但似乎很简单的事情,我不知道NSNotifications.

我对super.tabBarController.otherView.tabBarItem.badgeValue = @"1"这样的东西进行了疯狂猜测(因为我设置了以类似的方式选择了哪个选项卡),但我并不感到惊讶,这不起作用.

谢谢

Rud*_*ger 37

感谢alku83指出我正确的方向,代码是:

[[super.tabBarController.viewControllers objectAtIndex:2] tabBarItem].badgeValue = @"1";
Run Code Online (Sandbox Code Playgroud)


Jim*_*ota 7

我正在使用Xcode 4.5与Storyboard和iOS 6,所以答案可能已经改变,因为它最初发布.

首先,你必须像这样访问Tab Bar Controller:

UITabBarController *tabController = (UITabBarController *)self.window.rootViewController;
Run Code Online (Sandbox Code Playgroud)

然后你可以这样设置徽章:

[[tabController.viewControllers objectAtIndex:1] tabBarItem].badgeValue = @"New!";
Run Code Online (Sandbox Code Playgroud)