it-swarm.com.ru

Swift - Доступ к окну AppDelegate из viewController

Я делаю пошаговое руководство (входящий поток) в своем приложении, и я хотел бы иметь кнопку пропуска .. Кнопка расположена на viewController, поэтому я понял, что лучший способ перейти к другому viewController - это окно делегата приложения доступа. , 

Тем не менее, я получаю сообщение об ошибке, что AppDelegate.Type не имеет члена с именем "window".

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

Что-то не так с таким подходом?

Заранее спасибо!

18
DCDC

У вас есть опечатка, она должна быть 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
    }
40
Stefan Salatic

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
16
Dasoga

Свифт 3

Это лучший способ:

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

Вы используете имя протокола (т.е. AppDelegate) вместо экземпляра:

Должно быть:

appDelegate.window!.rootViewController = RootViewController   
1
giorashc

Это решение работает для: После входа/регистрации программно добавьте UITabbarController 

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