我想获得UINavigationController的rootViewController。它在Objective-c中工作,但是当我在Swift中使用它时,错误提醒我它是错误的。
如果我这样做,添加as! NSArray
,它有效,但也提醒我“从'[UIViewController]'转换为无关类型'NSArray'总是失败”。
有人可以更好地获取`rootViewController``而不会出错。谢谢。
答案 0 :(得分:26)
你可以通过
获得根self.navigationController!.viewControllers.first
答案 1 :(得分:12)
或作为扩展名:
extension UINavigationController {
var rootViewController : UIViewController? {
return viewControllers.first
}
}
然后你就这样使用它:
if let rootv = navigationController?.rootViewController { }
答案 2 :(得分:2)
或许可以使用
self.navigationController.visibleViewController
或
self.navigationController.topViewController
答案 3 :(得分:0)
替换
let homevci = controllerArray.objectAtIndex(0) as? NBHomeVC
与
let homevci = controllerArray.first as? NBHomeVC
或
let homevci = controllerArray[0] as? NBHomeVC