记录两个dismissViewController 的扩展方法
2021-01-05 本文已影响0人
Nulll
有时候在多次调用presentViewController: 方法的时候,可能有需求像 push一样,需要pop 到根控制器,或者pop到指定控制器。但是presentViewController:之后却只有 dismissViewControllerAnimated:这一个方法。于是乎想到了写一个类似于pop 的方法来实现dismiss 到指定控制器,或者dismiss到根控制器。
第一个。dismiss到根控制器
///1、dismiss 掉所有控制器。
- (void)dismissToRootViewControllerAnimated:(BOOL)animated completion:(void (^ __nullable)(void))completion {
//[self.navigationController popToRootViewControllerAnimated:<#(BOOL)#>]
UIViewController *vc = self;
while (vc.presentingViewController) {
vc = vc.presentingViewController;
}
[vc dismissViewControllerAnimated:animated completion:completion];
}
第二个。dismiss到指定控制器
///2、dismiss 到指定控制器。
- (void)dismissToViewController:(UIViewController *)viewController animated:(BOOL)animated completion:(void (^ __nullable)(void))completion {
//[self.navigationController popToViewController:<#(nonnull UIViewController *)#> animated:<#(BOOL)#>]
UIViewController *flag = nil;
UIViewController *vc = self;
while (vc.presentingViewController) {
vc = vc.presentingViewController;
if ([vc isKindOfClass:[viewController class]]) {
flag = vc;
break;
}
}
[flag dismissViewControllerAnimated:animated completion:completion];
}