8

Desidero rimuovere un badge non appena l'utente fa clic su un'altra scheda. Sto cercando di fare:Come rimuovere un badge UITabBar dopo che l'utente fa clic su un'altra scheda?

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

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

Ma non funziona.

+0

Eventuali duplicati http://stackoverflow.com/questions/2476903/remove-bagde-from-tabbar-item – jer

risposta

10

Si desidera rimuovere un badge dalla scheda corrente o da quella sfiorata?

Il posto giusto per fare questo, in entrambi i casi, è nella scheda controllore bar delegato, in:

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

noti che questa funzione viene chiamata ogni volta che l'utente tocca un pulsante scheda bar, indipendentemente dal fatto che il nuovo controller di visualizzazione mostrato è diverso da quello vecchio, quindi ti consigliamo di monitorare il tuo attuale controller di visualizzazione visibile. Questo è dove si aggiorna anche questo:

- (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

BTW, non sono sicuro se sbrigativo -tabBarController: didSelectViewController: viene chiamato quando viene creata la barra delle schede o se è necessario impostare manualmente self.currentTabVC in -applicationDidFinishLoading. –

Problemi correlati