update reconoce que para necesario instale instalado este esta esperando disponible descargar controlador apple ios swift uiviewcontroller

ios - reconoce - Swift-Cómo descartar todos los controladores de vista para volver a la raíz



itunes esta esperando a que windows update instale el controlador para este iphone (8)

Coloca todos los controladores de vista en la pila, excepto el controlador de vista raíz y actualiza la pantalla.

func popToRootViewController(animated: Bool)

Pero si desea ir a un controlador específico, simplemente use la siguiente función.

func popToViewController(UIViewController, animated: Bool)

Muestra los controladores de vista hasta que el controlador de vista especificado se encuentra en la parte superior de la pila de navegación.

Quiero que mi aplicación pueda ir a un primer controlador de vista cada vez que los usuarios lo deseen.

Así que quiero crear una función para descartar todos los controladores de vista, independientemente de si está insertado en los controladores de navegación o se presenta de manera modesta o abre cualquier método.

Probé varias maneras, pero no pude descartar todos los controladores de vista. hay una manera fácil?


Hola a todos, aquí está la respuesta para Swift-4.

para volver al controlador de vista de raíz, simplemente puede llamar a una línea de código y su trabajo estará listo.

self.view.window?.rootViewController?.dismiss(animated: true, completion: nil)

y si tiene la pantalla de inicio y luego la pantalla de inicio de sesión y desea ir a la pantalla de inicio de sesión, simplemente puede agregar el controlador de vista presentado en el código anterior

self.view.window?.rootViewController?.presentedViewController!.dismiss(animated: true, completion: nil)


Hola: Si está utilizando la navegación, puede utilizar la primera o si está utilizando el modelo de presentación, puede utilizar la segunda

Para la navegación

self.navigationController?.popToRootViewController(animated: true)

Para presentar como modelo

self.view.window!.rootViewController?.dismissViewControllerAnimated(false, completion: nil)


Para lograr lo que desea, modifique la pila de navegación y luego haga popViewController.

let allControllers = NSMutableArray(array: navigationController!.viewControllers) let vcCount = allControllers.count for _ in 0 ..< vcCount - 2 { allControllers.removeObject(at: 1) } // now, allControllers[0] is root VC, allControllers[1] is presently displayed VC. write back to nav stack navigationController!.setViewControllers(allControllers as [AnyObject] as! [UIViewController], animated: false) // then pop root VC navigationController!.popViewController(animated: true)

Vea this para la forma de manipular aún más la pila de navegación. Si su VC superior es modal, descártela primero antes del código anterior.


Prueba esto :

self.view.window?.rootViewController?.dismiss(animated: true, completion: nil)

debe descartar todos los controladores de vista por encima del controlador de vista raíz.

Si eso no funciona, puedes hacerlo manualmente ejecutando un bucle while como este.

func dismissViewControllers() { guard let vc = self.presentingViewController else { return } while (vc.presentingViewController != nil) { vc.dismiss(animated: true, completion: nil) } }

Desecharía todos los viewControllers hasta que tenga un presentController.

Editar: si desea descartar / desplegar ViewControllers puede usar

self.navigationController?.popToRootViewController(animated: true)

Espero eso ayude.


Puede usar este fragmento de código para configurar su controlador de vista en rootViewController.

let destination = HomeVC() let appDelegate:UIApplicationDelegate = UIApplication.shared.delegate! let initialViewController = destination let navigationController = UINavigationController(rootViewController: initialViewController) appDelegate.window??.rootViewController = navigationController appDelegate.window??.makeKeyAndVisible()


Simplemente pida a su rootViewController que descarte cualquier ViewController si presenta.

if let appDelegate = UIApplication.shared.delegate as? AppDelegate { appDelegate.window?.rootViewController?.dismiss(animated: true, completion: nil) (appDelegate.window?.rootViewController as? UINavigationController)?.popToRootViewController(animated: true) }


func dismiss_all(view: UIView){ view.window!.rootViewController?.dismiss(animated: true, completion: nil) }