通过响应者链条找到控制器

Object-C

UIViewController *vc = nil;
        for (UIView* next = [self superview]; next; next = next.superview) {
            UIResponder *nextResponder = [next nextResponder];
            if ([nextResponder isKindOfClass:[UIViewController class]]) {
                vc = (UIViewController *)nextResponder;
                break;
        }
}

swift

- parameter view: 当前view
     
     - returns: view所在的viewcontroller
     */
    class func viewController(_ view:UIView) -> UIViewController  {
        var next = view as? UIView
        
        while next != nil {
            let nextResponder = next?.next
            if let nextResponder =  nextResponder as? UIViewController{
                return nextResponder;
            }
            next = next?.superview
        }
        return UIViewController()
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容