Je suis peu confus au sujet de la pile UINavigationController
. Je montre mon UIViewController("SubmitRequestViewController")
de mon rootViewController("ViewController")
.ViewController est appelé plusieurs fois de mon rootViewController
Ci-dessous mon code:
let controller = SubmitRequestViewController.init(nibName: "SubmitRequestViewController", bundle: nil)
self.navigationController?.pushViewController(controller, animated: true)
Maintenant, je suis juste essayer de revenir de SubmitRequestViewController
à mon rootViewController
.
//Home Button
@objc fileprivate func backHome() {
let _ = self.navigationController?.popToRootViewController(animated: true)
}
//Back Button
@objc fileprivate func backButton() {
let _ = self.navigationController?.popViewController(animated: true)
}
Si je vais à nouveau à mon « SubmitRequestViewController
» ça devient deux fois appel.
Donc, cela continue sans interruption. Il appellera plusieurs fois si je répète les étapes ci-dessus.
Maintenant ce que je suis arrivé est: -
navigationController.viewControllers.count
devient augmenté continuesly.
J'essaie d'apparaître à navigationController
mais il est toujours présent.
J'ai essayé aussi: -
self.navigationController?.dismiss(animated: true, completion: nil)
En fait, je suis tir d'une notification dans ma classe DrawerViewController: -
//Submit Request
else if itemArray[indexPath.row].contains("SUBMIT REQUEST") == true {
tableView.deselectRow(at: indexPath, animated: false)
self.dismiss(animated: true, completion: nil)
NotificationCenter.default.post(name: Notification.Name(rawValue : AssessNowKyes.submitRequest), object: nil)
}.
Je l'appelle dans mes ViewControllerClass: -
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(submitRequestClicked), name: Notification.Name(rawValue : AssessNowKyes.submitRequest), object: nil)
}
//Submit Request Clicked
@objc fileprivate func submitRequestClicked() {
let controller = SubmitRequestViewController.init(nibName: "SubmitRequestViewController", bundle: nil)
self.navigationController?.pushViewController(controller, animated: true)
}
Je le fais. Je ne sais pas à propos de je dois supprimer Observer aussi? Parce que j'ai essayé ça aussi. Ça ne fonctionne pas.
pouvez-vous essayer d'exécuter la méthode popviewcontroller sur le thread principal? – Basheer
supprimer let _ =, self.navigationController? .popToRootViewController (animé: true) est ce qui est nécessaire –
U signifie seulement ce self.navigationController? .popViewController (animé: true)? – kishor0011