如何获取UINavigationController的rootViewController

Rem*_*say 18 ios swift rootviewcontroller

我想获得UINavigationController的rootViewController.它在Objective-c中工作,但是当我在Swift中使用它时,错误提醒我它是错误的.

代码截图1.

如果我这样做,添加as! NSArray,它的工作原理,但也提醒我"从'[UIViewController]'转换为无关类型'NSArray'总是失败".

代码截图2

有人可以显示更好的方法来获取`rootViewController``而不会出错.谢谢.

use*_*088 29

你可以得到根,

self.navigationController!.viewControllers.first
Run Code Online (Sandbox Code Playgroud)


Bog*_*rca 14

或作为扩展:

extension UINavigationController {
    var rootViewController : UIViewController? {
        return viewControllers.first
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你像这样使用它:

if let rootv = navigationController?.rootViewController { }
Run Code Online (Sandbox Code Playgroud)