2010-11-18 52 views
3

J'essaie de changer les images de ma barre d'onglets dans un ViewController, mais pour afficher les nouvelles images, je dois cliquer sur chaque élément de la barre d'onglets.Recharger/Actualiser les éléments de la barre d'onglets dans un ViewController?

for (CustomTabBarItem *myItem in self.tabBarController.tabBar.items){ 
     myItem.enabled = YES; 

     myItem.badgeValue = @"1"; 

     UIImage *myImage = [[UIImage alloc] initWithContentsOfFile:[[DesignManager sharedManager] getPathOfFile:@"test.png"]]; 

     *myItem.imageSelect= *myImage; // change images of each item. don't appear if I dont click on the item 
} 

Quelqu'un sait Comment puis-je afficher directement ces images? Merci

Répondre

2

Vous devez remplacer l'ancien élément de la barre d'onglets par un nouveau. Vous ne pouvez pas mettre à jour l'image dynamiquement sinon. La méthode la plus simple consiste à définir la propriété tabBarItem du view-controller représenté par un onglet donné. Si vous voulez faire de l'intérieur de ce contrôleur de vue, il suffit d'écrire:

self.tabBarItem = [[UITabBarItem alloc] initWithTitle: @"title" image: myImage: tag: nil]; 

Ou bien, vous pouvez le faire d'ailleurs, supposons que votre délégué application:

UIViewController* vc = [tabBarController.viewControllers objectAtIndex: 3]; 
vc.tabBarItem = [[UITabBarItem alloc] initWithTitle: @"title" image: myImage: tag: nil]; 
+0

ça marche! merci – blade196

2

Je sais que c'est un vieux question. J'ai rencontré le même problème lorsque j'ai besoin de mettre à jour la valeur du badge depuis un autre onglet actif. La création d'un autre UITabBarItem résoudra votre problème actuel mais provoquera une fuite de mémoire potentielle lorsque ce code sera appelé plusieurs fois. De plus, lorsque d'autres contrôleurs de vue accèdent à l'onglet, ils ne font pas référence à UITabBarItem nouvellement créé. Mon truc est

vc.tabBarItem = vc.tabBarItem; 

Ça marche pour moi.

+0

merci beaucoup. –

+0

ne fonctionne pas, ios 10 –