Get top most UIViewController

后端 未结 24 2141
别那么骄傲
别那么骄傲 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:33

    For anyone looking for a swift 5/iOS 13+ solution (keywindow is deprecated since iOS 13)

    extension UIApplication {
    
        class func getTopMostViewController() -> UIViewController? {
            let keyWindow = UIApplication.shared.windows.filter {$0.isKeyWindow}.first
            if var topController = keyWindow?.rootViewController {
                while let presentedViewController = topController.presentedViewController {
                    topController = presentedViewController
                }
                return topController
            } else {
                return nil
            }
        }
    }
    

提交回复
热议问题