ios - 如何从navigationController(viewControllers/stack)弹回指定viewController?

标签 ios uinavigationcontroller viewcontroller

我创建了一个具有串行 View (A、B、C、D、...)的应用程序,我需要将 D 弹出回 B。 有人可能会说为什么不使用:

[self.navigationController popToViewController:[[self.navigationController viewControllers] objectAtIndex:1] animated:YES];

但是,这不是一个好的解决方案。因为这个方法需要你得到我们的“B”所在的索引。

问题:如何获取viewControllers中“B”的索引?

UIViewControllers 中的格式应该是:
“<答:0x6e70710>”, “”, "", "", “

我已经尝试使用 rangeOfStringhasPrefix 来获取“B” View 的索引,但没有成功。

最佳答案

在这里,我想知道 NavigationController 通过 Stack 的概念 管理 ViewController。即 LAST COME FIRST OUT。这里有两种实现相同的方法。

1)在这里您可以进行迭代以获得如下所示的理想 ViewController

  for (id controller in [self.navigationController viewControllers])
   {
   if ([controller isKindOfClass:[BViewController class]])
  {
    [self.navigationController popToViewController:controller animated:YES];
    break;
  }
  }

2) 这里有 A,B,C,D Controller 。意味着 B 将在第三位,所以你能做什么

您可以如下硬连接索引

  [self.navigationController popToViewController:[[self.navigationController viewControllers] objectAtIndex:2] animated:YES];

希望对你有所帮助..

关于ios - 如何从navigationController(viewControllers/stack)弹回指定viewController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13393308/

相关文章:

ios - 移除 ViewController 消失时的键盘通知

iOS 8.2 Swift Google 登录按钮文本不出现

iphone - 控制 UINavigationItem titleView 的大小/位置

ios - 如果 ViewController 包含 TableView 作为根目录,如何将它添加到导航 Controller ?

iphone - 只有两个组件的自定义DatePicker

swift - 通过键盘扩展在 UINavigationController 中呈现 subview

ios - 让 ViewControllers 访问 NavigationController 的好方法?

ios - 如果在 View Controller 1 上选择了我的 "button",则图像应该显示并保留在 View Controller 2 上

ios - UIViewController 抛出 'unrecognized selector' 错误

ios - 我们可以通过 Apple 商务管理分发 Enterprise ios 应用程序吗?