Skip to content

Instantly share code, notes, and snippets.

@vietstone-ng
Created April 7, 2018 10:32
Show Gist options
  • Save vietstone-ng/aa1a41a1afe97f4c6c77abb178bae0f0 to your computer and use it in GitHub Desktop.
Save vietstone-ng/aa1a41a1afe97f4c6c77abb178bae0f0 to your computer and use it in GitHub Desktop.
extension UIApplication {
static func topViewController(base: UIViewController? = UIApplication.shared.keyWindow?.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
}
static func currentNavigationController() -> UINavigationController? {
return topViewController()?.navigationController
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment