Je rencontre un problème avec une application iPhone utilisant UINavigationController. Quand j'utilise pushNavigationController, cela fonctionne très bien. L'iPhone fait son animation en passant au ViewController suivant. Mais lorsque vous utilisez un tableau de ViewControllers et la méthode setViewControllers, il y a un petit problème dans l'animation qui peut devenir un bogue d'animation clairement visible.L'utilisation de setViewController de UINavigationController sur l'iPhone ne se comporte pas correctement
L'extrait suivant est appelé dans le ViewController racine. En fonction d'une condition, il doit soit basculer sur ViewController1, soit directement dans ViewController2. Dans ce dernier cas, l'utilisateur peut retourner à vc1, puis à la racine.
NSMutableArray* viewControllers = [NSMutableArray arrayWithCapacity:2];
// put us on the stack
[viewControllers addObject:self];
// add first VC
AuthentificationViewController* authentificationViewController =
[[[AuthentificationViewController alloc] initWithNibName:@"AuthentificationViewController" bundle:nil] autorelease];
[viewControllers addObject:authentificationViewController];
if (someCondition == YES)
{
UserAssignmentsListViewController* userAssignmentsListViewController =
[[[UserAssignmentsListViewController alloc] initWithNibName:@"UserAssignmentsOverviewViewController" bundle:nil] autorelease];
[viewControllers addObject:userAssignmentsListViewController];
}
[self.navigationController
setViewControllers:[NSArray arrayWithArray:viewControllers] animated:YES];
Comme vous pouvez le voir, je vais ajouter le premier et peut-être la deuxième VC au tableau, la mise enfin NavigationController pile avec animation. Cela fonctionne correctement si j'ajoute seulement le premier contrôleur. Mais dans le cas où l'animation devrait aller au 2ème contrôleur, le titre de la barre de navigation ne sera pas "volant". Au lieu de cela, il y a un titre vide jusqu'à ce que l'animation soit terminée. Et, pire encore, si je remplace le titre de la barre de navigation par un bouton personnalisé, ce bouton sera affiché dans le coin supérieur gauche jusqu'à ce que l'animation soit terminée. C'est tout à fait un bug d'affichage.
J'ai essayé d'utiliser une solution de contournement avec plusieurs méthodes pushViewController, mais l'animation ne semble pas correcte. Je veux que la navigation fasse son animation de la même manière que le fait PushViewController. La seule différence ici est que je n'ajoute pas de VC mais que je mets toute la pile à la fois. Y a-t-il une autre solution de contournement ici, ou cela pourrait-il être considéré comme un bug d'un framework? J'ai pensé à utiliser seulement pushNavController pour VC2, puis en quelque sorte insérer VC1 dans la pile, mais cela ne semble pas possible.
Merci pour tous les conseils et astuces. :-)
Données techniques: J'utilise iOS 4.2, compilant pour 4.0.
Avez-vous trouvé une solution? Si oui, partagez s'il vous plaît. Je suis confronté à un problème d'animation similaire. – Pria
Non, pas une solution qui fonctionne comme le comportement normal avec pushNavigationController. J'ajoute toujours à la fois VC et appel à setViewControllers, mais le second VC n'a pas de titre de barre de navigation au début. Je l'ai mis (dans mon cas, c'est un bouton de titre) une fois l'animation terminée. Ça n'a pas l'air si bien mais ça marche. – qwertfisch