Present多次后获取最顶层的VC
2018-11-02 本文已影响68人
12345qwert
前言
假如页面A --> 页面B --> 页面C 都是通过present的形式弹出页面。那么代码的写法如下:
[A present B];
[B present C];
或者
[A present B];
[A.presentd present C];
需求点
条件
- 在A的基础上已经present了5次,即A--B--C--D--E--F。
- 目前只能获取到A
问题
这个时候来了一个G,如何获取到F,然后将G进行present?
代码
if (A.presentedViewController) {
UIViewController *vc = A.presentedViewController;
UIViewController *needPresentingVC = vc;
while (needPresentingVC) {
UIViewController *tempVC = needPresentingVC.presentedViewController;
if (nil == tempVC) {
break;
}
else {
needPresentingVC = tempVC;
}
}
dispatch_async(dispatch_get_main_queue(), ^{
[needPresentingVC presentViewController:G animated:NO completion:^{
}];
});
}
注释
- 在这里needPresentingVC获取到的就是F页面