PresentedViewController 與 PresentingViewController區(qū)別
假設(shè)從A控制器通過present的方式跳轉(zhuǎn)到了B控制器奏篙,那么 A.presentedViewController 就是B控制器;B.presentingViewController 就是A控制器貌矿。
使用場景一:presentingViewController
從A跳轉(zhuǎn)到B,從B跳轉(zhuǎn)到C罪佳,從C跳轉(zhuǎn)到D逛漫,如何由D直接返回到A呢?可以通過 presentingViewController 一直找到A控制器赘艳,然后調(diào)用A控制器的 dismissViewControllerAnimated 方法酌毡。
UIViewController *controller = self;
while(controller.presentingViewController){
controller = controller.presentingViewController;
}
[controller dismissViewControllerAnimated:YES completion:nil];
使用場景二:PresentedViewController
在當(dāng)前ViewController連續(xù)調(diào)用 [self presentViewController:vc animated:YES completion:^{}];
,連續(xù)跳轉(zhuǎn)
UIViewController *topRootViewController = self.window.rootViewController;
// 在這里加一個這個樣式的循環(huán)
while (topRootViewController.presentedViewController) {
// 這里固定寫法
topRootViewController = topRootViewController.presentedViewController;
}
CTNavigationController *naVc = [[CTNavigationController alloc]initWithRootViewController:receiveOrderVC];
// 然后再進(jìn)行present操作
[topRootViewController presentViewController:naVc animated:YES completion:nil];