iOS中UINavigationController实现多级pop回退

iOS中UINavigationController的应用是非常常见的,我们知道iOS系统中呢对导航栏都是以压栈的方式管理的,通常我们使用到的只是上下级页面间的跳转,但是如果我们从A视图控制器push到B视图控制器,在从B视图控制器push到C视图控制器,那么问题来了,现在我们要从C使用Pop的方式直接回退到A要怎么实现呢?不买关子直接上代码:

    NSArray *controllers = self.navigationController.viewControllers;
    for ( id viewController in controllers) {
        if ([viewController isKindOfClass:[AViewController class]]) {
            [self.navigationController popToViewController:viewController animated:YES];
        }
    }

只要控制器在之前出现过进入了导航栏的栈中,我们就可以在当前导航栏中获取到当前栈中的所有视图控制器,从中获取到之前的视图控制器,然后执行下面的方法进行回退操作:

[self.navigationController popToViewController:viewController animated:YES];

通常这种情况下都要出现反向传值,什么?反向传值你不会?好吧,你就去问下万能的度娘吧。这么简单的问题使用通知或者代理就可以实现了!

你可能感兴趣的:(ios,导航栏,导航栏跳转,导航栏多级回退)