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.
Code screenshot 1.
If I do this, add as! NSArray
, it works, but also reminds me that "cast from '[UIViewController]' to unrelated type 'NSArray' always fails".
Code screenshot 2
Can somebody show a better way to get the `rootViewController`` without error. Thank you.
You can get the root by,
self.navigationController!.viewControllers.first
Or as an extension:
extension UINavigationController {
var rootViewController : UIViewController? {
return viewControllers.first
}
}
And then you use it like this:
if let rootv = navigationController?.rootViewController { }
Or maybe this can be used
self.navigationController.visibleViewController
or
self.navigationController.topViewController
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With