This code works fine on iOS 12 - The issue is in iOS 13+ I know it's related to the iOS 13 scenes somehow .
extension UIViewController {
static var top: UIViewController? {
get {
return topViewController()
}
}
static var root: UIViewController? {
get {
return UIApplication.shared.windows[0].rootViewController
}
}
static func topViewController(from viewController: UIViewController? = UIViewController.root) -> UIViewController? {
if let tabBarViewController = viewController as? UITabBarController {
return topViewController(from: tabBarViewController.selectedViewController)
} else if let navigationController = viewController as? UINavigationController {
return topViewController(from: navigationController.visibleViewController)
} else if let presentedViewController = viewController?.presentedViewController {
return topViewController(from: presentedViewController)
} else {
return viewController
}
}
}
When i get the UIViewController.top
using iOS 12 everything works fine, but in iOS 13 it's nil.
Any ideas how to fix this ?