Reload / Refresh Tableiste Elemente in einem Viewcontroller?
-
26-09-2019 - |
Frage
ich ändern Bilder meiner Tabbar versuchen in einem Viewcontroller, aber die neuen Bilder angezeigt werden, ich muß auf jedem Tab-Leiste Elemente klicken.
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 direkt diese Bilder angezeigt werden? Dank
Lösung
Sie müssen die alte Tab-Leiste Element durch ein neues ersetzen. Sie können das Bild dynamisch aktualisieren sonst.
Der einfachste Weg, dies zu tun ist, um die tabBarItem Eigenschaft des View-Controller durch einen gegebenen Tab dargestellt einzustellen. Wenn Sie dies aus diesen View-Controller machen wollten, nur schreiben:
self.tabBarItem = [[UITabBarItem alloc] initWithTitle: @"title" image: myImage: tag: nil];
Oder Sie könnten dies tun, von irgendwo anders, sagen AppDelegate:
UIViewController* vc = [tabBarController.viewControllers objectAtIndex: 3];
vc.tabBarItem = [[UITabBarItem alloc] initWithTitle: @"title" image: myImage: tag: nil];
Andere Tipps
Ich weiß, das ist eine alte Frage. Ich lief in das gleiche Problem, wenn ich das Abzeichen Wert von einem anderen aktiven Tab aktualisieren müssen. ein anderen UITabBarItem
Erstellen wird Ihr aktuelles Problem lösen, sondern verursacht potenziellen Speicherverlust, wenn dieser Code oft genannt wird. Plus, wenn andere Ansicht-Controller auf die Registerkarte zuzugreifen, sie haben keine Bezugnahme auf neu erstellte UITabBarItem
. Mein Trick ist,
vc.tabBarItem = vc.tabBarItem;
Es funktioniert für mich.