Skip to content

Instantly share code, notes, and snippets.

@monsoir
Created January 4, 2020 08:49
Show Gist options
  • Save monsoir/9cdeaa6a8827d0b5a557ff15924f833b to your computer and use it in GitHub Desktop.
Save monsoir/9cdeaa6a8827d0b5a557ff15924f833b to your computer and use it in GitHub Desktop.
UIViewController extensions
extension UIViewController {
/// 获取最顶层的视图控制器
func topMostViewController() -> UIViewController? {
if self.presentedViewController == nil {
return self
}
if let navigation = self.presentedViewController as? UINavigationController {
return navigation.visibleViewController?.topMostViewController()
}
if let tab = self.presentedViewController as? UITabBarController {
if let selectedTab = tab.selectedViewController {
return selectedTab.topMostViewController()
}
return tab.topMostViewController()
}
return self.presentedViewController?.topMostViewController()
}
}
extension UIApplication {
func topMostViewController() -> UIViewController? {
return self.keyWindow?.rootViewController?.topMostViewController()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment