In my particular case I need to get the topmost view controller but avoid view controllers of some types like UIAlertController
. I took code from here:
extension UIViewController {
func topMostViewController() -> UIViewController {
if let presented = self.presentedViewController {
return presented.topMostViewController()
}
if let navigation = self as? UINavigationController {
return navigation.visibleViewController?.topMostViewController() ?? navigation
}
if let tab = self as? UITabBarController {
return tab.selectedViewController?.topMostViewController() ?? tab
}
return self
}
}
I need somehow pass array of types into this method and for example return self
if presentedViewController is UIAlertController
. But could you explain how to do that? Tried to pass arrays of types [UIViewController.self]
, [AnyClass]
and etc. but I’m not able to check for a concrete type.