【发布时间】:2019-01-08 12:53:50
【问题描述】:
鉴于我有 rootViewController 即 UIApplication.shared.delegate?.window??.rootViewController,我想获取活动导航控制器(如果有)。
到目前为止,我想出了什么:
guard var controller = rootViewController?.presentedViewController else { return rootViewController as? UINavigationController }
while let presented = controller.presentedViewController {
controller = presented
}
controller = controller.navigationController ?? controller
return controller as? UINavigationController
这就足够了吗?一个合作给了我这个解决方案,但我不明白的部分是rootViewController?.presentedViewController。不应该是rootViewController?.presentingViewController吗?
【问题讨论】:
-
建议检查here的答案,抓住顶部的viewController然后得到它的navigationController
-
你可以使用 self.navigationController 来获取当前活动的 navigationController