Je fais une procédure pas à pas (flux d'intégration) dans mon application et j'aimerais avoir un bouton de saut ... Le bouton étant situé sur viewController, j'ai donc compris que le meilleur moyen de passer à un autre viewController était d'accéder à la fenêtre de délégation .
Cependant, il ne cesse de m'obtenir l'erreur que AppDelegate.Type n'a pas de membre appelé "window".
@IBAction func skipWalkthrough(sender: AnyObject) {
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
AppDelegate.window!.rootViewController = RootViewController
}
Y a-t-il un problème avec une telle approche?
Merci d'avance!
Vous avez une faute de frappe, elle est supposée être appDelegate
pas AppDelegate
Alors comme ça:
@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
C'est un meilleur moyen:
if let window = NSApplication.shared().windows.first {
window.acceptsMouseMovedEvents = true;
}
Vous utilisez le nom du protocole (c'est-à-dire AppDelegate
) à la place de l'instance:
Devrait être:
appDelegate.window!.rootViewController = RootViewController
Cette solution fonctionne pour: Après la connexion/l'enregistrement, ajoutez par programme UITabbarController
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
appDelegate.window!.rootViewController = tabs //()
appDelegate.window!.makeKeyAndVisible()