美文网首页
子视图获取父视图的视图控制器的方法

子视图获取父视图的视图控制器的方法

作者: 四角天空_串串 | 来源:发表于2016-11-11 10:26 被阅读0次

在swift开发iOS中,当我们对界面中的cell,item,uimageview等进行点击,选中的操作时,需要进行跳转到其它视图控制器的动作,但是在cell,item,uimageview的内部是不能直接获取视图控制器,这时往往需要使用代理,闭包的方法回到父视图的控制器进行跳转,很是麻烦,下面是在cell,item,uimageview中直接获取父视图的控制器的代码:

func nextresponsder(viewself:UIView)->UIViewController{
        var vc:UIResponder = viewself
        while vc.isKindOfClass(UIViewController) != true {
            vc = vc.nextResponder()!
        }
        return vc as! UIViewController
    }

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

相关文章

网友评论

      本文标题:子视图获取父视图的视图控制器的方法

      本文链接:https://www.haomeiwen.com/subject/eoffpttx.html