present open change ios swift uiviewcontroller appdelegate

ios - open - set root view controller programmatically swift



Swift-Accediendo a la ventana AppDelegate desde viewController (5)

Hago tutorial (flujo de incorporación) en mi aplicación y me gustaría tener un botón de omisión. El botón se encuentra en viewController, por lo que descubrí que la mejor manera de pasar a otro viewController sería acceder a la ventana de delegado de la aplicación.

Sin embargo, sigue recibiendo un error que dice que AppDelegate.Type no tiene un miembro llamado "ventana".

@IBAction func skipWalkthrough(sender: AnyObject) { let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate AppDelegate.window!.rootViewController = RootViewController }

¿Hay algo malo con este enfoque?

¡Gracias por adelantado!


Está utilizando el nombre del protocolo (es decir, AppDelegate ) en lugar de la instancia:

Debiera ser:

appDelegate.window!.rootViewController = RootViewController


Esta solución funciona para: Después de iniciar sesión / registrarse agregue UITabbarController mediante programación

let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate appDelegate.window!.rootViewController = tabs //() appDelegate.window!.makeKeyAndVisible()


Swift 3

Esta es una manera mejor:

if let window = NSApplication.shared().windows.first { window.acceptsMouseMovedEvents = true; }


Tiene un error tipográfico que se supone que es appDelegate no AppDelegate . Así como esto:

@IBAction func skipWalkthrough(sender: AnyObject) { let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate appDelegate.window!.rootViewController = RootViewController }

Swift 3.2

@IBAction func skipWalkthrough(_ sender: AnyObject) { let appDelegate = UIApplication.shared.delegate as! AppDelegate appDelegate.window!.rootViewController = controller }


Swift 3+

let appDelegate = UIApplication.shared.delegate as? AppDelegate let mainStoryboard = UIStoryboard(name: "Main", bundle: nil) let homeController = mainStoryboard.instantiateViewController(withIdentifier: "HomeViewController") as! HomeViewController appDelegate?.window?.rootViewController = homeController