taylor - ¿Cómo puedo volver al controlador de vista inicial en Swift?
taylor swift reputation tour (5)
Mire en desenrollar segueing si está trabajando con guiones gráficos.
Solo necesita crear la opción de desenrollado en el controlador, que desea navegar a:
@IBAction func unwindToMe(segue: UIStoryboardSegue){}
A continuación, cree la transición del guión gráfico.
Y cuando necesite navegar hacia atrás, simplemente llame al método performSegue
con el identificador de performSegue
desenrollado que acaba de crear.
Si quieres hacerlo solo desde código, entonces solo puedes escribir algo como:
let loginViewController = self.storyboard?.instantiateViewControllerWithIdentifier("Login")
UIApplication.sharedApplication().keyWindow?.rootViewController = loginViewController
En este caso, configurará su aplicación en el estado inicial.
Así que tengo una vista de inicio de sesión, después de un inicio de sesión exitoso va a la primera vista de un controlador de navegación, luego el usuario puede ir más profundo a una vista de configuración y luego a una vista de cierre de sesión. Esta desconexión debería llevar al usuario a la vista de inicio de sesión (que no forma parte del controlador de navegación). Funciona con este código:
let loginViewController = self.storyboard!.instantiateViewControllerWithIdentifier("Login") as? LoginViewController
self.navigationController!.pushViewController(loginViewController!, animated: true)
Pero la vista de inicio de sesión muestra la barra de navegación en la parte superior, lo que no debería hacer, tal vez hay algo más que self.navigationController!.pushViewController
que debería estar usando?
Si tiene un controlador de navegación, desde su controlador, use:
self.navigationController?.popToRootViewControllerAnimated(true)
Te recomiendo que hagas un cambio de un ViewController a otro, en lugar de presionar tu ViewController de esa manera.
Entonces, primero debes presionar Ctrl + clic desde tu primer ViewController hasta tu nombre de usuario ViewController, y luego en el inspector de atributos darle un Identificador.
Entonces, todo lo que tienes que hacer es esto:
self.performSegueWithIdentifier("yourIdentifier", sender: self)
Ahora, para la barra de navegación, le sugiero que quite el controlador de navegación de la vista de inicio de sesión y que lo asocie a su primera vista. Eliminaría la barra de navegación de su vista de inicio de sesión.
intentalo
self.view.window?.rootViewController?.dismissViewControllerAnimated(true, completion: nil)
Esto lo llevará de vuelta al principio del flujo de la aplicación.
Actualizado a Swift 4 (gracias @javaBeast)
self.view.window?.rootViewController?.dismiss(animated: true, completion: nil)
SWIFT: debe usar un segue de desenrollado.
Antes que nada, ponga la siguiente línea en su
FirstViewController
:@IBAction func prepareForUnwind(segue: UIStoryboardSegue) { }
La función en realidad no tiene ningún código dentro.
- Ahora, dirígete a tu guión gráfico y crea un segue de desenrollado para
LogoutViewController
con un control-arrastrando desde el botón amarillo al botón Salir. Me gusta esto:
Seleccione el segue de desenrollado creado para
FirstViewController
.Cambiar el identificador de segue:
Vaya al código de
LogoutViewController
y simplemente llame al desenrollado segue normalmente:self.performSegueWithIdentifier("unwindToViewController1", sender: self)
Swift 4
self.performSegue(withIdentifier: "unwindToViewController1", sender: self)