swift获取子视图的控制器

当视图层级很深的时候,如何获取当前视图的控制器?

获取根视图控制器的方法

方法一

思路:遍历当前视图的父视图,获取控制器


func responseUIViewController() -> UIViewController?{

        for view in sequence(first: self.superview, next: { $0?.superview }){

            if let response = view?.next{

                if response.isKind(of: UIViewController.self){

                    return response as? UIViewController

                }

            }

        }

        return nil

    }

方法二

思路:获取当前视图的根视图控制器

    private func responseUIViewController() -> UIViewController?{

        guard let vc = UIApplication.shared.windows.first else {

            return nil

        }

        return vc.rootViewController

    }

你可能感兴趣的:(swift获取子视图的控制器)