跳转到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
