2010-08-09 56 views
8

我想在用户单击另一个选项卡时立即移除徽章。我正在尝试:如何在用户单击另一个选项卡后删除UITabBar徽章?

- (void)viewDidDisappear:(BOOL)animated { 
    [super viewDidDisappear:animated]; 

    UITabBarItem *tbi = (UITabBarItem *)self.tabController.selectedViewController.tabBarItem; 
    tbi.badgeValue = nil; 
} 

但它不起作用。

+0

可能重复http://stackoverflow.com/questions/2476903/remove-bagde-from-tabbar-item – jer 2010-08-10 00:03:42

回答

10

您想从当前选项卡中移除一个徽章,还是要移除该徽章?

这样做的正确的地方,无论哪种方式,是在你的标签栏控制器的委托,于:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController; 

注意,只要用户点击标签栏按钮,无论这个函数被调用显示的新视图控制器与旧视图控制器不同,因此您需要跟踪当前可见视图控制器。在这里,你会更新,也:

- (void)tabBarController:(UITabBarController *)tabBarController 
     didSelectViewController:(UIViewController *)viewController { 
    if(viewController != self.currentTabVC) { 
     // if you want to remove the badge from the current tab 
     self.currentTabVC.tabBarItem.badgeValue = nil; 

     // or from the new tab 
     viewController.tabBarItem.badgeValue = nil; 

     // update our tab-tracking 
     self.currentTabVC = viewController; 
    } 
} 
+0

顺便说一句,我不知道如果不加思索-tabBarController:didSelectViewController:在创建标签栏时被调用,或者您需要在-applicationDidFinishLoading中手动设置self.currentTabVC。 – 2010-08-10 00:22:28

相关问题