2017-04-13 147 views
0

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

Find image description here

在此先感谢。

+1

“那么我如何获得导航控制器”这取决于“我”是谁。需要获取导航控制器的代码在哪里? – matt

+0

如果使用SWL是初始VC,如果您在SWL之前使用登录,那么您可以在此场景中获得导航控制器 –

+0

您应该使用SWRevealViewController作为rootviewController并使用Login视图作为contentViewController。所以这样就会出现在开始。登录后,您必须将其重定向到HomeViewController,其中滑动菜单按钮可用于打开“幻灯片”菜单。 – Aashish1aug

回答

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 
    } 
} 

从这个

if let _topController = UIApplication.topViewController() { 

    /// place your logic here 
} 

越来越topViewController后,您可以检查_topController是导航控制器或SWReveal控制器,如果它是SWReveal您可以访问您的前视图控制器并放置您的更多逻辑。

相关问题