Swift4 获取当前页面的最层控制器

符合 UITabBarController ---> UINavigationController布局


//MARK: 获取当前页面的最顶层控制器

func getCurrentVCBS() -> UIViewController {
    let keywindow = UIApplication.shared.keyWindow
    let firstView: UIView = (keywindow?.subviews.first)!
    let secondView: UIView = firstView.subviews.first!
    var vc = viewForController(view: secondView)!
    vc = ((vc as! UITabBarController).selectedViewController! as! UINavigationController).visibleViewController!
  
    return vc
}

private func viewForController(view:UIView)->UIViewController?{
    var next:UIView? = view
    repeat{
        if let nextResponder = next?.next, nextResponder is UIViewController {
            return (nextResponder as! UIViewController)
        }
        next = next?.superview
    }while next != nil
    return nil
}

//MARK: 校验结果的正确性

//classType: 当前页面类类型
func vcResult(classType: UIViewController.Type) -> Bool {
    return getCurrentVCBS().isKind(of: classType)
}




猜你喜欢

转载自blog.csdn.net/flyingfirefish/article/details/80091490