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