Comment puis-je réinitialiser un UINavigationController?
J'ai un problème impliquant la UINavigationController.
J'ai une application qui ont trois contrôleurs de vue que je suis passer entre l'utilisation de la navigation contrôleurs de push et pop de la fonctionnalité.
Le problème est le suivant:
Je suis dans le troisième point de vue du contrôleur et fait un appel à
[self.navigationController popToRootViewControllerAnimated:YES];
ce qui m'amène à la première vue-contrôleur (ce qui est exactement ce que je veux) mais quand j'essaie ensuite de naviguer vers le second point de vue du contrôleur, je me retrouve dans le troisième pour une raison quelconque.
Est-il de toute façon vous pouvez réinitialiser la manette de navigation, ou suis-je en train de faire cela dans le mauvais sens?
Voici le code que j'utilise pour push et pop la manette de navigation:
Le code suivant est appelé dans la vue racine contrôleur lorsque l'utilisateur décide de lancer l'appareil photo.
if(self.cameraViewController == nil)
{
CollageCameraViewController *camView = [[CollageCameraViewController alloc] init];//WithNibName:nil bundle:[NSBundle mainBundle]];
self.cameraViewController = camView;
[camView release];
}
[self.navigationController pushViewController:self.cameraViewController animated:NO];
Le code suivant est appelé à partir de CollageCameraViewController (seconde) après que l'utilisateur a pris sa fotos:
if(self.renderView == nil)
{
CollageRenderViewController *renderViewController = [[CollageRenderViewController alloc] initWithNibName:nil bundle:[NSBundle mainBundle]];
self.renderView = renderViewController;
[renderViewController release];
}
[self.navigationController pushViewController:self.renderView animated:YES];
Le code suivant est appelé à partir de CollageRenderViewController lorsque l'utilisateur décide d'aller retour à la page principale (root) vue:
[self.navigationController popToRootViewControllerAnimated:YES];
Maintenant, si j'essaie de pousser CollageCameraViewController de nouveau, je me retrouve dans CollageRenderViewController au lieu de cela, pourquoi est-ce?
Cheers,
Andreas
- Poster une partie de votre code afin que nous puissions voir comment vous êtes poussant / popping votre point de vue contrôleurs et exactement ce que vous êtes pousser et de les faire éclater.
Vous devez vous connecter pour publier un commentaire.
J'ai plusieurs VCs dans ma pile de configurer les écrans avant de passer à la véritable écran d'accueil.
J'ai eu le mien pour qu'il fonctionne comme ceci:
Je pousse la HomeViewController et réécrire la pile à l'écran d'accueil.
Une fois que vous pop à la vue de la racine de contrôleur, il est "reset". Votre prochaine action avec le navigationController devrait être de pousser (ou re-pousser) la vue-contrôleur. Vous ne devriez pas essayer de "naviguer" à travers la pile.
Mise à JOUR:
J'ai créé un système de navigation basé sur iPhone de projet de tester ton code et il fonctionne. Chacun de mes trois points de vue a qu'un seul bouton qui envoie son contrôleur son IBAction message lorsque vous appuyez dessus.
Voici mon code:
RootViewController.h:
RootViewController.m:
SecondViewController.h:
SecondViewController.m:
ThirdViewController.h:
ThirdViewController.m: