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

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

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

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

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

10
задан Sheehan Alam 9 August 2010 в 23:58
поделиться

1 ответ

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

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

- (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;
    }
}
12
ответ дан 4 December 2019 в 00:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: