iOS 删除navigationController某一个viewController

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/IT_liuchengli/article/details/78885467

目前有这样一个需求,不如有一个认证流程,每个微信导航行控制器流程如下:

A -> B ->C ->D   ,其中B和C是一个认证流程,走完这个流程,点击D的返回,直接回到A上。

即在navigationController的栈,删除B和C 。


OC语言的实现方式:


    NSMutableArray *marr = [[NSMutableArray alloc]initWithArray:self.navigationController.viewControllers];
    for (UIViewController *vc in marr) {
        if ([vc isKindOfClass:[theVCYouWantToRemove class]]) {
            [marr removeObject:vc];
            break;
        }
    }
    self.navigationController.viewControllers = marr;

记得break;否则会出一些小问题 。
若用self removeFromParentViewController这个方法,但是会出现小得问题就放弃使用了。

返回后当前的导航栏没变,会是返回前的控制器的导航栏



Swfit的实现方式:

     // 1.先Push到新的控制器,在删除当前控制器

      //2. 导航栏剔除当前控制器
        let arrayVC = NSMutableArray.init(array: (self.navigationController?.viewControllers)!)
        for vc in arrayVC {
            if (vc as! UIViewController).classForCoder == 当前控制器.self  {
                arrayVC.remove(vc)
                break;
            }
        }
        self.navigationController?.viewControllers = arrayVC as! [UIViewController];




上面的方法实现两次就可以删除B 和C 控制器,然后D返回后就到了A上




参考网址:http://blog.csdn.net/it_male/article/details/49931989

猜你喜欢

转载自blog.csdn.net/IT_liuchengli/article/details/78885467