ios 子视图获取父视图的视图控制器的方法(oc 和 swift)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_30963589/article/details/82967301

oc 获取父视图控制器的方法:

- (UIViewController *)viewController

{

    for (UIView* next = [self superview]; next; next = next.superview) {

        UIResponder *nextResponder = [next nextResponder];

        if ([nextResponder isKindOfClass:[UIViewController class]]) {

            return (UIViewController *)nextResponder;

        }

    }

    return nil;

}

swift获取父视图控制器的方法:

 func nextresponsder(viewself:UIView)->UIViewController{
        var vc:UIResponder = viewself
     
        while vc.isKind(of: UIViewController.self) != true {
            vc = vc.next!
        }
        return vc as! UIViewController
    }
    

接下来是阐述代码的原理:在ios开发中每一个view有superview和subviews,同时view可以通过superview和subview来获取其父视图和子视图;类比于此,每一个view controller也有其父控制器和子控制器称为parentcontroller和childcontroller;要注意uiview和uiviewcontroller都是uiresponsder的子类,当前视图可以通过nextresponsder的方法获取其父类型,这种类型组成一条控制链,当获取的视图没有父视图时,就可以获得该视图所在的视图控制器

猜你喜欢

转载自blog.csdn.net/qq_30963589/article/details/82967301