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