Retirer UITabBarItem
-
26-09-2019 - |
Question
Comment puis-je supprimer un UITabBarItem
d'un UITabBar
?
Je n'ai pas essayé quoi que ce soit, parce que je ne l'ai pas trouvé quoi que ce soit à partir de recherches Google ou la documentation UITabBar
, UITabBarController
ou UITabBarItem
.
Merci d'avance! :)
La solution
UITabBar a un la collection NSArray des articles. Étant donné que la propriété items est un NSArray et non un
Autres conseils
conseils de Mike Caron lancera une exception si vous avez l'intention de modifier un tabBar qui appartient à un contrôleur.
Dans iOS 3.0 et versions ultérieures, vous ne devriez pas tenter d'utiliser les méthodes et propriétés de cette classe pour modifier la barre d'onglet lorsqu'il est associé à un onglet barre d'objets du contrôleur. modificatrice la barre d'onglets de cette manière entraîne la lancer une exception. Au lieu de cela, tout modifications à la barre d'onglets ou son articles devraient se produire dans la barre d'onglets Interface de contrôleur. Vous pouvez encore modifier directement un objet de barre d'onglet est pas associée à une barre d'onglets contrôleur.
Dans ce cas self.tabBarItem=nil
va le supprimer.
NOTE: cela semble ne pas travailler dans iOS 11. Il était encore bon dans iOS 10
.Ceci est une réponse modérément horrible, à mon avis, en partie parce qu'il est subvertir les directives d'interface humaine, mais tout de même, il semble fonctionner proprement:
UITabBar *oldbar = self.tabBarController.tabBar;
UITabBar *newbar = [[UITabBar alloc] initWithFrame:CGRectMake(0,0,oldbar.frame.size.width,oldbar.frame.size.height)];
NSMutableArray *olditems = [[oldbar items] mutableCopy];
[olditems removeObjectAtIndex:0];
NSArray *newitems = [[NSArray alloc] initWithArray:olditems];
[newbar setItems:newitems animated:false];
[oldbar addSubview:newbar];
Que des couches sur le dessus proprement elle de l'ancienne barre d'onglets, et il maintient sa fonctionnalité.