Get top most UIViewController

后端 未结 24 2248
别那么骄傲
别那么骄傲 2020-11-22 14:47

I can\'t seem to get the top most UIViewController without access to a UINavigationController. Here is what I have so far:

UIApplic         


        
24条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-11-22 15:25

    in SWIFT 5.2

    you can use underneath code:

    import UIKit
    
    extension UIWindow {
        static func getTopViewController() -> UIViewController? {
            if #available(iOS 13, *){
                let keyWindow = UIApplication.shared.windows.filter {$0.isKeyWindow}.first
                
                if var topController = keyWindow?.rootViewController {
                    while let presentedViewController = topController.presentedViewController {
                        topController = presentedViewController
                    }
                    return topController
                }
            } else {
                if var topController = UIApplication.shared.keyWindow?.rootViewController {
                    while let presentedViewController = topController.presentedViewController {
                        topController = presentedViewController
                    }
                    return topController
                }
            }
            return nil
        }
    }
    

提交回复
热议问题