2010-02-26 4 views
2

J'essaie de comprendre par programme si un élément de barre d'onglets particulier dans mon application a un badge.iPhone: Problème lors de la lecture de la valeur du badge de uitabbaritem

Pendant que je débogue, visuellement, je peux clairement voir que c'est le cas. Mais quand je lance ce code dans la viewController en question:

UITabBarItem* thisVCsTabBarItem = self.tabBarItem; 
NSString* badgeValue = thisVCsTabBarItem.badgeValue; 

... badgeValue est nul. Et quand j'inspecte thisVCsTabBarItem dans le débogueur, son membre _badgeValue est nul.

Que se passe-t-il ici? Dois-je faire quelque chose différemment en essayant de lire cette valeur à partir de l'élément de la barre d'onglets?

Merci.

+1

Cela devrait fonctionner. Êtes-vous sûr que self.tabBarItem renvoie l'objet que vous pensez être? – Don

+0

C'est une bonne question. Il a le bon titre, bien que l'image ne soit pas définie ... et clairement, elle est définie, si vous regardez la barre d'onglets à l'écran. Alors peut-être instanciation d'un nouvel élément de la barre d'onglets, même si un existe déjà? (Je sais qu'il existe déjà, parce que je le mets plus tôt dans le code ... c'est pourquoi j'ai le badge dessus!) –

Répondre

1

je fais quelque chose comme ça pour un onglet Téléchargements:

for (UITabBarItem* item in self.tabBarController.tabBar.items) { 
    if (item.tag == 3) { 
     if (downloadCount > 0) { 
      item.badgeValue = [NSString stringWithFormat: @"%d", downloadCount]; 
     } else { 
      item.badgeValue = nil; 
     } 
    } 
} 

Je ne pense pas que vous êtes censé accéder directement au tabBarItem. Il est préférable de trouver votre article dans le tableau des articles tabBarController.

+0

Voici ce que dit la documentation: "La valeur par défaut est un élément de la barre d'onglets qui affiche la vue Le titre du contrôleur.La première fois que vous accédez à cette propriété, le UITabBarItem est créé.Par conséquent, vous ne devez pas accéder à cette propriété si vous n'utilisez pas un contrôleur de barre d'onglets. " Mais puisque j'utilise un contrôleur de barre d'onglets, l'implication est que ce n'est pas un problème pour moi d'y accéder. Connaissez-vous autre chose dans les documents qui indique que l'accès direct de - [UIViewController tabBarItem] est un problème? Merci. –

2

regardant un code où j'utilise la propriété UITabBarItembadgeValue, je vois que self.tabBarItem.badgeValue retours nil tandis que self.navigationController.tabBarItem.badgeValue renvoie la valeur correcte. Est-ce que ça pourrait être ça? Le fait est que l'auto-complétion me donne effectivement tabBarItem après self. Facile de faire une erreur à cause de cela.

Questions connexes