我将从另一个modalviewcontroller呈现一个modalviewcontroller。当我解雇第二个modalviewcontroller时,第一个和第二个modalviewcontroller都应该被解雇。我试图访问第一个模态视图,如
[self.view.superview dismissmodalviewcontroller];
但是显示错误。从第二个获取第一个modalViewController并从中调用dismiss方法的正确方法是什么?
答案 0 :(得分:10)
就是这样。
A礼物B.这里,A是B的父(这里,A.modalViewController将是B,而B.parentViewController将是A)
和B呈现C.这里,B是C的父(这里,B.modalViewController将是C,而C.parentViewController将是B)
根据苹果指南,母公司控制人员有责任解雇其子女管理员。
因此,如果要关闭控制器C,请在C.parentViewController上调用dismissModalViewController。由于C的父亲是B,因此B正在解雇它所呈现的模态(子)控制器。
但你想要解雇B. B的父母有责任解雇B.所以你需要说[B.parentViewController dismissModalViewControllerAnimated:YES];
因此,您需要从C获取B作为C.parentViewController(不要忘记在这里进行类型转换)。然后你说[B.parentViewController dismissModalViewControllerAnimated:YES];
答案 1 :(得分:2)
尝试[self.parentViewController dismissModalViewControllerAnimated:YES];
这将关闭两个模态视图控制器
答案 2 :(得分:2)
dismissModalViewControllerAnimated:方法是UIViewController
类的一部分,而不是UIView
类的一部分。所以你需要做
[self.parentViewController dismissModalViewControllerAnimated:YES];
而不是在self.view.superview
上调用它。
答案 3 :(得分:2)
为了进一步澄清,您可能需要的是这样的事情:
[self.parentViewController.parentViewController dismissModalViewControllerAnimated:YES];