Swift-доступ к окну AppDelegate из viewController
Я делаю пошаговое руководство (onboarding flow) в своем приложении, и я хотел бы иметь кнопку пропуска. Кнопка находится на viewController, поэтому я понял, что лучшим способом перейти на другой viewController будет окно делегата приложения access.
однако он продолжает получать мне ошибку, которая AppDelegate.Тип не имеет члена под названием "window".
@IBAction func skipWalkthrough(sender: AnyObject) {
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
AppDelegate.window!.rootViewController = RootViewController
}
есть ли что-то неправильное в таком подходе?
спасибо заранее!
5 ответов
у вас опечатка, должно быть appDelegate
не AppDelegate
. Вот так:
@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
Swift 3
Это лучший способ:
if let window = NSApplication.shared().windows.first {
window.acceptsMouseMovedEvents = true;
}
вы используете имя протокола (т. е. AppDelegate
) вместо экземпляра:
должно быть:
appDelegate.window!.rootViewController = RootViewController
Это решение работает для : После входа / регистрации программно добавьте UITabbarController
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
appDelegate.window!.rootViewController = tabs //()
appDelegate.window!.makeKeyAndVisible()