2009-09-08 11 views
2

Toute idée pourquoi cela fonctionne:UITabBar Badging

[[[[[self tabBarController] tabBar] items] objectAtIndex:2] 
              setBadgeValue:@"Hello"]; 

Mais cela ne fonctionne pas? Je préférerais ne pas avoir à fournir un index de tabulation explicite (2 dans le code ci-dessus). En outre, existe-t-il un moyen d'obtenir l'index de la barre d'onglets à partir du contrôleur de vue dans le cas où le premier extrait est le seul moyen de faire ce travail?

Merci.

Répondre

0

Le tabBarItem auquel vous faites référence se trouve-t-il réellement dans l'onglet tabBarViewController? Si ce n'est pas alors votre problème. Vous pouvez connaître l'index de votre viewController car u spécifions l'ordre lorsque vous définissez les contrôleurs de vue dans votre tabBarviewCOntroller, donc si vous définissez viewController une première dans votre tabBarViewController puis sur le bouton possèderont un index de 0.

votre commentaire votre question devient plus claire pour moi, comme l'indique la réponse, peut-être une fois que vous avez défini le contrôle UITabBarController viewController, il saisit son tabBarItem et les changements ultérieurs à cette propriété viewController ne sont pas mis à jour par tabBarViewController (je peux me tromper)

+0

Pouvez-vous clarifier un peu? J'avais l'impression que si vous ajoutiez un contrôleur de vue à une barre d'onglets dans IB, alors le tabbaritem dans votre contrôleur de vue serait automatiquement défini. La variable tabBarItem n'est définitivement pas nulle et elle a le titre correct, mais ce n'est pas la même adresse que celle accessible via le tableau tabBar items. –

+0

Vous venez de le trouver dans les docs Apple: "Les éléments de la barre d'onglets sont configurés via leur contrôleur de vue correspondant Pour associer un élément de barre d'onglets à un contrôleur de vue, créez une nouvelle instance de la classe UITabBarItem, configurez-la de manière appropriée pour le contrôleur de vue l'assigner à la propriété tabBarItem du contrôleur de vue Si vous ne fournissez pas d'élément de barre d'onglets personnalisé pour votre contrôleur de vue, le contrôleur de vue crée un élément par défaut ne contenant aucune image et le texte de la propriété title du contrôleur de vue. Je pense que je vais juste y accéder à travers le tableau par index plutôt que d'en créer un. –

+0

Ah je vois ce que vous faisiez maintenant, il semble que l'exemple que vous avez donné devrait fonctionner ... ce que je pense est qu'une fois que vous affectez un viewController à votre tababrcontroller, il capture ce tabbar et change ensuite le viewController tabBarItem la propriété ne met pas à jour le bouton parce que le tabBarViewController ne vérifie pas les mises à jour. – Daniel