9
votes

Comment être averti de la vue éclairée dans UinavigationController?

Je veux effectuer une action lorsque l'utilisateur a appuyé sur le bouton arrière de mon uinavigationController lors de votre arrivée à un certain uiviewcontroller . .

Malheureusement, il ressemble à UinavigationControllerdelegate n'a pas de méthode pour être averti de l'apparition des vues.

En tant que solution de contournement, j'ai maintenant dans la méthode ViewDidDisappear Mon action, qui ne doit être tirée que lorsque animé est oui . Cela fonctionne, mais c'est un peu laide.

Comment devrais-je le faire correctement?


1 commentaires

Utilisez la fenêtre ViewWilldisappear pour votre action si vous voulez déjà savoir


5 Réponses :


0
votes

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.


0 commentaires

5
votes

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:


0 commentaires

28
votes

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
    }
}


0 commentaires

0
votes

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");
        }
    }


1 commentaires

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.



0
votes

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)


0 commentaires