跳转到controller
页面,并移除不需要显示的控制器。
常用于支付成功
后,跳转到支付成功页
,但是支付页
或者其他页面
不需要显示
,在成功页
点击返回按钮
或者手势返回
时候。
/// push到controler中并移除不需要显示的控制器
/// - Parameters:
/// - controller: 显示的控制器
/// - controllers: 移除不需要显示的控制器
/// - animated: 是否需要动画
- (void)showViewController:(UIViewController *)controller removeViewControllers:(NSArray<NSString * > *)controllers animated:(BOOL)animated{
NSMutableArray<UIViewController *> *newStackControllers = [NSMutableArray array];
__block NSArray<UIViewController *> *currentStackControllers = self.navigationController.viewControllers;
[currentStackControllers enumerateObjectsUsingBlock:^(UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
if (![controllers containsObject:NSStringFromClass(obj.class)]) {
[newStackControllers addObject:obj];
}
}];
[newStackControllers addObject:controller];
[self.navigationController setViewControllers:newStackControllers animated:animated];
}
注:下载demo