Как удалить значок UITabBar после того, как пользователь нажмет другую вкладку? - PullRequest
10 голосов
/ 10 августа 2010

Я хочу удалить значок, как только пользователь нажмет на другую вкладку.Я пытаюсь сделать:

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

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

Но это не работает.

1 Ответ

12 голосов
/ 10 августа 2010

Вы хотите удалить значок с текущей вкладки или тот, к которому прикоснулись?

В любом случае, правильное место для этого - в вашем делегате контроллера панели вкладок:

- (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;
    }
}
...