5 votes

Supprimer UITabBarItem

Comment supprimer un UITabBarItem d'un UITabBar ?

Je n'ai rien essayé, car je n'ai rien trouvé en cherchant sur Google ou dans la documentation de UITabBar , UITabBarController ou UITabBarItem .

Merci d'avance ! :)

9voto

Mike Caron Points 2426

UITabBar dispose d'un NSArray collection d'objets. Puisque la propriété items est un NSArray et non un NSMutableArray il faudrait construire un nouveau NSArray à partir du tableau existant, sans l'objet à supprimer, puis attribuer la propriété items au nouveau tableau.

/* suppose we have a UITabBar *myBar, and an int index idx */
NSMutableArray *modifyMe = [[myBar items] mutableCopy];
[modifyMe removeObjectAtIndex:idx];
NSArray *newItems = [[NSArray alloc] initWithArray:modifyMe];
[myBar setItems:newItems animated:true];

4voto

Comptrol Points 4415

L'avis de Mike Caron lèvera une exception si vous avez l'intention de modifier un tabBar appartenant à un contrôleur.

Dans iOS 3.0 et les versions ultérieures, vous ne devez pas [ ] de cette classe pour modifier la lorsqu'elle est associée à un contrôle de barre d'onglets objet contrôleur de barre d'onglets. Modifier la barre d'onglets de cette manière entraîne le une exception. Au lieu de cela, toute modification de la barre d'onglets ou de ses doit se faire par l'intermédiaire de l'interface du contrôleur de la barre d'onglets de l'interface contrôleur de la barre d'onglets. [ ] modifier directement un objet de la barre d'onglets qui n'est pas associé à un contrôleur de barre d'onglets contrôleur.

Dans ce cas self.tabBarItem=nil l'enlèvera.

0voto

Kaolin Fire Points 1102

REMARQUE : il semble que cela ne fonctionne pas dans iOS 11. Elle fonctionnait encore sous iOS 10.

C'est une réponse modérément horrible, à mon avis, en partie parce qu'elle va à l'encontre des lignes directrices de l'interface humaine, mais elle semble tout de même 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];

Elle se superpose ainsi proprement à l'ancienne barre d'onglets, dont elle conserve la fonctionnalité.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X