如果未将导航控制器设置为初始视图控制器,如何获取?

时间:2017-04-13 04:29:58

标签: ios swift3

我正在开发一个应用程序,为此我使用了SWRevealViewController库来显示左侧菜单。根据SWRevealViewController指南,我没有将导航控制器设置为故事板上的是初始视图控制器。那么如何在这种情况下获得导航控制器呢?因为我需要访问导航控制器的根视图控制器。

Find image description here

提前致谢。

1 个答案:

答案 0 :(得分:0)

这是UIApplication的扩展,通过它您可以获得顶视图控制器

extension UIApplication {

    class func topViewController(base: UIViewController? = (UIApplication.shared.delegate as! AppDelegate).window?.rootViewController) -> UIViewController? {
        if let nav = base as? UINavigationController {
            return topViewController(base: nav.visibleViewController)
        }
        if let tab = base as? UITabBarController {
            if let selected = tab.selectedViewController {
                return topViewController(base: selected)
            }
        }
        if let presented = base?.presentedViewController {
            return topViewController(base: presented)
        }
        return base
    }
}

从此

获取topViewController后
if let _topController = UIApplication.topViewController() {

   /// place your logic here 
} 

你可以检查_topController是导航控制器还是SWR​​eveal控制器如果是SWReveal你可以访问前视图控制器并放置你的进一步逻辑。