2010-11-18 6 views
3

Ich versuche, Bilder von meiner Tabbar in einem ViewController zu ändern, aber um die neuen Bilder anzuzeigen, muss ich auf jeden Tableiste Element klicken.Reload/Refresh Tableiste Elemente in einem 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 
} 

Wer weiß, wie kann ich diese Bilder direkt anzeigen? Danke

Antwort

2

Sie müssen die alte Tab-Leiste durch eine neue ersetzen. Sie können das Bild andernfalls nicht dynamisch aktualisieren.

Der einfachste Weg, dies zu tun, ist die TabBarItem-Eigenschaft des View-Controllers durch eine gegebene Registerkarte dargestellt. Wenn Sie dies aus diesem View-Controller machen wollte, nur schreiben:

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

Oder Sie dies von woanders tun könnte, sagen AppDelegate:

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

es funktioniert! danke – blade196

2

Ich weiß, das ist ein alter Frage. Ich habe das gleiche Problem, wenn ich den Badge-Wert von einem anderen aktiven Tab aktualisieren muss. Das Erstellen eines weiteren UITabBarItem wird Ihr aktuelles Problem lösen, verursacht jedoch möglicherweise einen Speicherverlust, wenn dieser Code viele Male aufgerufen wird. Wenn andere Ansichts-Controller auf die Registerkarte zugreifen, haben sie keinen Bezug auf neu erstellte UITabBarItem. Mein Trick ist

vc.tabBarItem = vc.tabBarItem; 

Es funktioniert für mich.

+0

vielen dank. –

+0

funktioniert nicht, ios 10 –