美文网首页
获取当前活动的navigationcontroller

获取当前活动的navigationcontroller

作者: 宁静世界 | 来源:发表于2018-09-13 20:30 被阅读0次

当我在使用DNSPageView框架的时候发现子控制器,没办法 push, 不知道什么原因,可能是没有获取到导航栏,我们通过UIApplication可以获取到当前控制器的导航栏来 push 出一个新的控制器

func getNavigationController()-> UINavigationController {
        var parent: UIViewController?
        if let window = UIApplication.shared.delegate?.window,let rootVC = window?.rootViewController {
            parent = rootVC
            while (parent?.presentedViewController != nil) {
                parent = parent?.presentedViewController!
            }
            
            if let tabbar = parent as? UITabBarController ,let nav = tabbar.selectedViewController as? UINavigationController {
                return nav
            }else if let nav = parent as? UINavigationController {
                return nav
            }
        }
        return UINavigationController()
    }

使用

let navigationController =  getNavigationController()
navigationController.pushViewController(vc, animated: true)

相关文章

网友评论

      本文标题:获取当前活动的navigationcontroller

      本文链接:https://www.haomeiwen.com/subject/zqpggftx.html