How to find topmost view controller on iOS

后端 未结 30 3028
遥遥无期
遥遥无期 2020-11-22 08:40

I\'ve run into a couple of cases now where it would be convenient to be able to find the \"topmost\" view controller (the one responsible for the current view), but haven\'t

30条回答
  •  忘掉有多难
    2020-11-22 09:03

    Yet another Swift solution

    func topController() -> UIViewController? {
    
        // recursive follow
        func follow(from:UIViewController?) -> UIViewController? {
            if let to = (from as? UITabBarController)?.selectedViewController {
                return follow(to)
            } else if let to = (from as? UINavigationController)?.visibleViewController {
                return follow(to)
            } else if let to = from?.presentedViewController {
                return follow(to)
            }
            return from
        }
    
        let root = UIApplication.sharedApplication().keyWindow?.rootViewController
    
        return follow(root)
    
    }
    

提交回复
热议问题