我正在开发一个应用程序,为此我使用了SWRevealViewController库来显示左侧菜单。根据SWRevealViewController指南,我没有将导航控制器设置为故事板上的是初始视图控制器。那么如何在这种情况下获得导航控制器呢?因为我需要访问导航控制器的根视图控制器。
提前致谢。
答案 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是导航控制器还是SWReveal控制器如果是SWReveal你可以访问前视图控制器并放置你的进一步逻辑。