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的方法获取其父类型,这种类型组成一条控制链,当获取的视图没有父视图时,就可以获得该视图所在的视图控制器
版权声明:本文为qq_30963589原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。