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.
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".
Quelqu'un peut-il montrer un meilleur moyen d'obtenir le `rootViewController`` sans erreur. Je vous remercie.
Vous pouvez obtenir la racine par,
self.navigationController!.viewControllers.first
Ou comme une extension:
extension UINavigationController {
var rootViewController : UIViewController? {
return viewControllers.first
}
}
Et puis vous l'utilisez comme ceci:
if let rootv = navigationController?.rootViewController { }
Ou peut-être que cela peut être utilisé
self.navigationController.visibleViewController
ou
self.navigationController.topViewController
remplacer
let homevci = controllerArray.objectAtIndex(0) as? NBHomeVC
avec
let homevci = controllerArray.first as? NBHomeVC
ou
let homevci = controllerArray[0] as? NBHomeVC