当我在使用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)