Lorsque l'utilisateur tape sur un bouton I afficher un écran de sélection. Le résultat est transmis dans mon modèle de vue. Le code ressemble à ceci:RxSwift - Appuyez sur Rejoué Events
locationButton.rx.tap
.flatMapLatest(wireframe.displayPlaceSelection)
.filterNil()
.map(DiscoverLocationSelection.location)
.subscribe(onNext: viewModel.updateLocation(with:))
.disposed(by: disposeBag)
Ce code fonctionne très bien, et l'utilisateur peut choisir un emplacement et sera retourné à cet écran avec le bouton.
Si l'utilisateur appuie à nouveau sur le bouton une deuxième fois, la fonction displayPlaceSelection()
est appelée deux fois. Si l'utilisateur devait le faire une troisième fois, la fonction sera appelée 3 fois. Cela entraîne plusieurs contrôleurs de vue étant poussés les uns sur les autres.
Comment puis-je arrêter ces événements de empiler?
L'effet est ceci:
Je peux supposer que ce code (s'abonner) est appelé à chaque fois que vous ouvrez ce vc et que vous avez donc de nombreux abonnés à l'événement tap. Où est ce code? 'viewDidLoad' ou' viewWillAppear' par exemple. –
Vous avez entièrement raison! Merci beaucoup. S'il vous plaît poster ce commentaire comme une réponse et je vais l'accepter. –