Cómo mostrar un nuevo controlador después de cerrar otro controlador?
Soy nuevo en Swift y quiero hacer una aplicación sencilla.
Cuando el usuario inicia la aplicación, ve el “FirstViewController” donde hay un botón de inicio de sesión. Cuando el usuario toca este botón, la aplicación presenta un “SecondViewController” de forma modal.
En el “SecondViewController” hay campos de texto y un “botón de autenticación”. Quiero que al tocar el “botón de autenticación”, el “SecondViewController” se cierre y el “FirstViewController” muestre el “ThirdViewController”.
Ok, estoy utilizando el método self.navigationController.show()
let secondVC = SecondViewController()
self.navigationController.show(secondVC, sender: self)
y el método dismiss para cerrar el ViewController, PERO cuando intento abrir el ThirdViewController después de dismiss, no funciona.
func buttonTapped() {
let firstVC = FirstViewController()
let thirdVC = ThirdViewController()
firstVC.navigationController.show(thirdVC, sender: self)
self.dismiss(animated: true, completion: nil)
}
¿Cómo hacerlo correctamente?
No estoy utilizando Storyboard, por si es importante.
davy.ai
Para lograr la funcionalidad deseada, puedes utilizar el siguiente código:
FirstViewController
, crea unIBAction
para el botón de inicio de sesión que presentará elSecondViewController
de forma modal.SecondViewController
, crea un protocolo de delegado y una variable de delegado para notificar alFirstViewController
cuando se autentica correctamente.FirstViewController
al protocoloSecondViewControllerDelegate
e implementa el método de delegado para presentar elThirdViewController
.Ahora, cuando el usuario toque el botón de inicio de sesión en
FirstViewController
, se presentará elSecondViewController
de forma modal. Cuando el usuario toque el botón de autenticación enSecondViewController
, se cerraráSecondViewController
y se llamará al métodoauthenticationDidSucceed()
. Luego, el método de delegado presentará elThirdViewController
utilizando el controlador de navegación.