dissmissViewController到跟控制器
不知道你有没有遇到过这个问题,控制器A presentViewController B 然后B presentViewController C,
现在呢我想在C 控制器里通过dissmissViewController到A
说到这里,再延伸下控制器的两个可能很多人都没注意的两个只读属性:presentedViewController和presentingViewController,他们分别是被present的控制器和正在presenting的控制器。 控制器A和B,[A presentViewController B animated:YES completion:nil]; 那么A相对于B就是presentingViewController,B相对于A是presentedViewController,即这个时候
B.presentingViewController = A;
A.presentedViewController = B;
了解之后就解决一下怎么从C控制器dismiss到A控制器呢!!哦吼吼见证奇迹的时候来了:
在C控制器dismiss方法里面:
UIViewController *rootVC = self.presentingViewController;
while (rootVC.presentingViewController) {
rootVC = rootVC.presentingViewController;
}
[rootVC dismissViewControllerAnimated:YEScompletion:nil];
这样就可以了,和刚才的理论是吻合的!
网友评论
然后我想D直接回到B,为什么代码是
UIViewController *rootVC = self.presentingViewController;
rootVC = rootVC.presentingViewController;
[rootVC dismissViewControllerAnimated:YES completion:nil];
此时的rootVC不就是B了吗,B执行dissmiss自己不应该也没有了吗?
比如我当前在A 跳转B的同时 关闭A