iOS-setViewControllers使用

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容