ios 如何获取 UINavigationController 的 rootViewController
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/41466729/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How can I get the rootViewController of UINavigationController
提问by Remsay
I want to get the rootViewController of UINavigationController. It works in Objective-c, but when I use it in Swift , the error reminds me that it was wrong.
我想获取 UINavigationController 的 rootViewController。它在 Objective-c 中工作,但是当我在 Swift 中使用它时,错误提醒我它是错误的。
If I do this, add as! NSArray
, it works, but also reminds me that "cast from '[UIViewController]' to unrelated type 'NSArray' always fails".
如果我这样做,添加as! NSArray
,它可以工作,但也提醒我“从 '[UIViewController]' 转换为不相关的类型 'NSArray' 总是失败”。
Can somebody show a better way to get the `rootViewController`` without error. Thank you.
有人可以展示一种更好的方法来无错误地获取 `rootViewController`。谢谢你。
回答by user6083088
You can get the root by,
你可以通过,
self.navigationController!.viewControllers.first
回答by Bogdan Farca
Or as an extension:
或者作为扩展:
extension UINavigationController {
var rootViewController : UIViewController? {
return viewControllers.first
}
}
And then you use it like this:
然后你像这样使用它:
if let rootv = navigationController?.rootViewController { }
回答by moonvader
Or maybe this can be used
或者这可以使用
self.navigationController.visibleViewController
or
或者
self.navigationController.topViewController
回答by Sameh Salama
replace
代替
let homevci = controllerArray.objectAtIndex(0) as? NBHomeVC
with
和
let homevci = controllerArray.first as? NBHomeVC
or
或者
let homevci = controllerArray[0] as? NBHomeVC