Vous avez plusieurs façons différentes de le faire. Le fait que vous soyez intégré dans un contrôleur UITAbBar complique considérablement ceci parce qu'il n'y a aucun moyen de différencier si viewDidAppear: est appelé en raison du contrôleur poussé ou de l'échange de tabulation, ce qui signifie que vous devrez peut-être stocker des données pour savoir provoque la transition et si vous avez besoin de cacher la barre ou non. En supposant que vous manipuliez cela, une option est de changer navigationBarHidden après votre animation. À la sortie, il n'y a pas de bon endroit pour gérer cela puisque vous voulez que l'animation pop se produise après l'animation de la barre. La solution la plus rapide consiste à masquer la barre puis à faire tourner manuellement votre runloop pendant ~ 0,5 seconde jusqu'à ce qu'il s'anime, puis continuez. C'est dégueulasse mais c'est rapide et ça marche.
- (void)viewWillDisappear:(BOOL)animated {
if (animated) {
[self.navigationController.navigationBar setHidden:YES animated:YES];
}
//GROSS
NSDate *endDate = [NSDate dateWithTimeIntervalSinceNow:0.5];
while([[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:endDate]);
}
Si vous voulez le faire proprement, je recommande de réimplémenter UINavigationController à partir de zéro.
La réponse n'est pas exactement ce que j'étais après mais juste assez. – tcurdt