web-dev-qa-db-fra.com

Comment puis-je obtenir le rootViewController de UINavigationController?

Je veux obtenir le rootViewController de UINavigationController. Cela fonctionne dans Objective-c, mais lorsque je l’utilise dans Swift, l’erreur me rappelle que c’était faux.

Code capture d'écran 1 .

Si je fais cela, ajoutez as! NSArray, cela fonctionne, mais cela me rappelle également que "la conversion de '[UIViewController]' vers un type non lié 'NSArray' échoue toujours".

Code screenshot 2

Quelqu'un peut-il montrer un meilleur moyen d'obtenir le `rootViewController`` sans erreur. Je vous remercie.

16
Remsay

Vous pouvez obtenir la racine par, 

self.navigationController!.viewControllers.first
25
user6083088

Ou comme une extension: 

extension UINavigationController {
    var rootViewController : UIViewController? {
        return viewControllers.first
    }
}

Et puis vous l'utilisez comme ceci: 

if let rootv = navigationController?.rootViewController { }
12
Bogdan Farca

Ou peut-être que cela peut être utilisé

self.navigationController.visibleViewController

ou

self.navigationController.topViewController
2
moonvader

remplacer 

let homevci = controllerArray.objectAtIndex(0) as? NBHomeVC

avec

let homevci = controllerArray.first as? NBHomeVC

ou 

let homevci = controllerArray[0] as? NBHomeVC
0
Sameh Salama