149 votes

Détection de l'appui sur le bouton "retour" d'une barre de navigation

J'ai besoin d'exécuter certaines actions lorsque le bouton Retour (retour à l'écran précédent, retour à la vue parent) est pressé sur une barre de navigation.

Existe-t-il une méthode que je puisse mettre en œuvre pour attraper l'événement et déclencher des actions pour mettre en pause et sauvegarder les données avant que l'écran ne disparaisse ?

0 votes

1 votes

Regardez le solution dans ce fil

0 votes

Je l'ai fait de cette façon montrer la décision ici

0voto

Vassily Points 429

Self.navigationController.isMovingFromParentViewController ne fonctionne plus sous iOS8 et 9. J'utilise :

-(void) viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    if (self.navigationController.topViewController != self)
    {
        // Is Popping
    }
}

-1voto

Jiří Zahálka Points 32

(SWIFT)

Nous avons finalement trouvé la solution. La méthode que nous recherchions est "willShowViewController", qui est une méthode déléguée de UINavigationController.

//IMPORT UINavigationControllerDelegate !!
class PushedController: UIViewController, UINavigationControllerDelegate {

    override func viewDidLoad() {
        //set delegate to current class (self)
        navigationController?.delegate = self
    }

    func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) {
        //MyViewController shoud be the name of your parent Class
        if var myViewController = viewController as? MyViewController {
            //YOUR STUFF
        }
    }
}

-4voto

Matt Points 1260

Il suffit d'implémenter votre propre action pour le bouton :

    [self.navigationItem.backBarButtonItem setAction:@selector(perform:)];

-(void) perform:(id)sender {

     //do your saving and such here

     [self.navigationController popViewControllerAnimated:NO];
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X