PresentedViewController 與 PresentingViewController區(qū)別
假設(shè)從A控制器通過present的方式跳轉(zhuǎn)到了B控制器,那么 A.presentedViewController 就是B控制器;B.presentingViewController 就是A控制器。
使用場(chǎng)景一: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];
使用場(chǎng)景二:PresentedViewController
在當(dāng)前ViewController連續(xù)調(diào)用 [self presentViewController:vc animated:YES completion:^{}];
,連續(xù)跳轉(zhuǎn)
UIViewController *topRootViewController = self.window.rootViewController;
// 在這里加一個(gè)這個(gè)樣式的循環(huán)
while (topRootViewController.presentedViewController) {
// 這里固定寫法
topRootViewController = topRootViewController.presentedViewController;
}
CTNavigationController *naVc = [[CTNavigationController alloc]initWithRootViewController:receiveOrderVC];
// 然后再進(jìn)行present操作
[topRootViewController presentViewController:naVc animated:YES completion:nil];