如果导航控制器未设置为初始视图控制器,如何获取导航控制器?
问题描述:
我正在使用一个应用程序,为此我使用SWRevealViewController库来显示左侧菜单。根据SWRevealViewController指南,我没有将导航控制器设置为我的是故事板上的初始视图控制器。那么如何在这种情况下获得导航控制器?因为我需要访问导航控制器的根视图控制器。如果导航控制器未设置为初始视图控制器,如何获取导航控制器?
在此先感谢。
答
这里的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
}
}
从这个
if let _topController = UIApplication.topViewController() {
/// place your logic here
}
越来越topViewController后,您可以检查_topController是导航控制器或SWReveal控制器,如果它是SWReveal您可以访问您的前视图控制器并放置您的更多逻辑。
“那么我如何获得导航控制器”这取决于“我”是谁。需要获取导航控制器的代码在哪里? – matt
如果使用SWL是初始VC,如果您在SWL之前使用登录,那么您可以在此场景中获得导航控制器 –
您应该使用SWRevealViewController作为rootviewController并使用Login视图作为contentViewController。所以这样就会出现在开始。登录后,您必须将其重定向到HomeViewController,其中滑动菜单按钮可用于打开“幻灯片”菜单。 – Aashish1aug