ios - 从层次结构中删除以前的 View Controller

标签 ios objective-c uiviewcontroller uinavigationcontroller uinavigationbar

当我从导航栏按下后退按钮时,我正在尝试跳过一个 ViewController

当我转到下一个 VC 时,它需要这样做:

A -> B -> C

但是当我想从 C 返回时,我想要呈现一个 ViewController:

C -> A

我设法用下一个代码做到了这一点:

    NSMutableArray *newControllers = [[NSMutableArray alloc]initWithArray:controllers];
    [newControllers removeObjectAtIndex:newControllers.count-2];
    self.navigationController.viewControllers = newControllers;

问题是显示的导航栏。当我从 A ViewController 获取 View 时,会显示来自 B ViewController 的导航栏。

有没有什么方法可以像从层次结构中删除 View Controller 一样删除导航栏项目?

最佳答案

UIViewController *vcPop = nil;  
for (UIViewController *viewContrl in self.navigationController.viewControllers) {
   if ([viewContrl class] == [YOUR POP VIEW CONTROLLER class]) {
       vcPop = (YOUR POP VIEW CONTROLLER  *)viewContrl;
       break;
 }
}
if(vcPop)
   [self.navigationController popToViewController:vcPop animated:YES];

关于ios - 从层次结构中删除以前的 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26159671/

相关文章:

objective-c - 在哪里为 iOS 应用程序创建全局变量?

ios - Swift UITableview 单元格搜索不起作用

ios - 添加 UIButton 以覆盖在 UITableView 之上

iOS 核心数据 - 编辑对象后不会立即获取任何内容

ios - 以编程方式添加和更改自定义 UIView (Swift)

ios - 我的工具栏不会显示在 webView 上方

ios - 使用 swift 和 objective-c 下载文件

ios - 如何设置场景物理体的边界以正确反弹?

javascript - 检查webView是否可以登录

objective-c - 在 iOS 中更改 ViewControllers 和传递数据