Je veux effectuer une action lorsque l'utilisateur a appuyé sur le bouton arrière de mon Malheureusement, il ressemble à En tant que solution de contournement, j'ai maintenant dans la méthode code> ViewDidDisappear code> Mon action, qui ne doit être tirée que lorsque Comment devrais-je le faire correctement? p> uinavigationController code> lors de votre arrivée à un certain
uiviewcontroller code>. p>.
UinavigationControllerdelegate code> n'a pas de méthode pour être averti de l'apparition des vues. P>
animé code> est
oui code>. Cela fonctionne, mais c'est un peu laide. P>
5 Réponses :
Vous pouvez appeler une méthode de déléguée lorsque vous visualisez ou définissez la logique sur la viewwillappear pour certains UIViewController. p>
Si vous avez une référence au contrôleur vers le bas de la pile, celui qui affichera quand celui-ci est sauté, vous pouvez vous enregistrer en tant que délégué et vérifier par
navigationController:willShowViewController:animated:
Le moyen le plus populaire de gérer un contrôleur de vue de la navigation (ainsi que de modal) implémente ViewWilldisappear code> pour votre contrôleur d'affichage.
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
if (self.isMovingFromParentViewController || self.isBeingDismissed) {
// This view controller is being popped or dismissed
}
}
Vous pouvez observer à l'UinavigationControllerdelegate et vérifier si la transition se produira:
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { if([navigationController.viewControllers containsObject:self]) { NSLog(@"push"); } else { NSLog(@"pop"); } }
Si vous avez une uitabbarcontroller, vous devez utiliser cette solution car la viewwilldisapper est appelée chaque fois que vous modifiez l'index de l'onglet actuel.
Tout d'abord, vous devez d'abord vous conformer à UINAVIGATIONCONTROLLERDelegate vers le contrôleur de navigation et mettre en œuvre cette méthode
if (dismissedViewController is DesireViewController)
Utilisez la fenêtre ViewWilldisappear pour votre action si vous voulez déjà savoir