Get top most UIViewController

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

    Too many flavours but none an iterative elaborated one. Combined from the previous ones:

         func topMostController() -> UIViewController? {
            var from = UIApplication.shared.keyWindow?.rootViewController
            while (from != nil) {
                if let to = (from as? UITabBarController)?.selectedViewController {
                    from = to
                } else if let to = (from as? UINavigationController)?.visibleViewController {
                    from = to
                } else if let to = from?.presentedViewController {
                    from = to
                } else {
                    break
                }
            }
            return from
        }
    

提交回复
热议问题