J'ai un projet de test simple avec un UINavigationController comme mon .rootViewController. Je pousse le premier ViewController qui a un bouton + comme bouton de droite, je m'inscris à ses taps pour présenter un nouveau ViewController (identique au précédent). Le segue push fonctionne comme je l'espère.Abonnez-vous à UINavigationController bouton de retour avec RxSwift/RxCocoa
UIKit gère le bouton de retour pour moi et je pense que c'est UINavigationController qui fait la magie derrière la scène. Maintenant, ce que je dois faire est de m'abonner au bouton de retour, mais je ne peux pas trouver comment faire ceci. J'ai essayé avec 1) navigationController.navigationBar.backItem? .backBarButtonItem? .rx.tap 2) navigationController.navigationItem.backBarButtonItem? .rx.tap , mais ils semblent être nul, de sorte que le chaînage en option empêche l'abonnement.
Merci pour votre aide, Luca-
Le contrôleur de vue actuel sera retiré de la pile du contrôleur de navigation et le contrôleur de vue précédent deviendra le nouveau contrôleur de vue actuel. Si vous avez besoin de ce nouveau contrôleur de vue pour faire quelque chose après qu'il soit de retour, vous devriez mettre ce code dans sa méthode 'viewWillAppear (animated:)', qui est appelée chaque fois qu'un contrôleur de vue devient le plus haut sur un contrôleur de nav ou est présenté de manière modale. – NRitH
Merci NRitH pour vos suggestions. J'explore comment la navigation de ViewController fonctionne avec RxSwift/RxCocoa. J'aimerais avoir un coordinateur qui instancie ViewControllers et ViewModels. Je pense que la navigation devrait être orchestrée par ces objets Coordinateur et pour cela ils doivent savoir quand l'utilisateur appuie sur le bouton de retour. Quoi qu'il en soit, c'est assez confus dans mon esprit, mais viewController.rx.sentMessage (#selector (UIViewController.viewWillDisappear (_ :))) fonctionne comme vous l'avez suggéré. – Luca