切换参考底图视图控制器iOS 8

切换参考底图视图控制器iOS 8,ios,ios8,modalviewcontroller,Ios,Ios8,Modalviewcontroller,这就是目标: 我有一个导航控制器(NC1),它是一个视图控制器(VC)。当我在该视图控制器中执行某些操作时,我需要(用户看不见)关闭VC,关闭NC1,然后显示另一个导航控制器(NC2),并显示相同的视图控制器VC 在iOS 7.0、7.1中,通过以下(略微调整的)代码,该功能运行良好: 但在iOS 8(Xcode 6.0)中,似乎即使在解散之后,VC仍保持活动状态,应用程序在最后一行崩溃,原因是: 应用程序试图以模态方式呈现活动控制器 当然,如果我将代码移动到完成块,用户可以看到更改(而且很难看

这就是目标:

我有一个导航控制器(NC1),它是一个视图控制器(VC)。当我在该视图控制器中执行某些操作时,我需要(用户看不见)关闭VC,关闭NC1,然后显示另一个导航控制器(NC2),并显示相同的视图控制器VC

在iOS 7.0、7.1中,通过以下(略微调整的)代码,该功能运行良好:

但在iOS 8(Xcode 6.0)中,似乎即使在解散之后,VC仍保持活动状态,应用程序在最后一行崩溃,原因是:

应用程序试图以模态方式呈现活动控制器

当然,如果我将代码移动到完成块,用户可以看到更改(而且很难看)

有没有办法检查或强制VC离开活动状态,或者有其他办法来模拟iOS 7的行为


谢谢你的回答

为什么需要切换导航控制器?它们是导航控制器的子类吗?如果不是,那么一个和另一个是一样的。你在这里想要什么效果?为什么您认为必须切换导航控制器?它们是导航控制器的相同子类,但我需要第二个具有不同根控制器。。我可能会补充一点,导航控制器本身是以模式显示的。您可以通过
viewControllers
属性(或
setViewControllers:animated
方法)修改堆栈。我没有想到这一点,因为我太专注于寻找切换它们的一般方法。谢谢,这解决了我的问题
  [controller dismissViewControllerAnimated:NO completion:nil];   //dismiss VC
  [self.presentedViewController dismissViewControllerAnimated:NO completion:nil]; //dismiss NC1

  SomeViewController * someViewController = [[SomeViewController alloc] init];  // root vc for NC2    
  NavigationController * navigationController = [[NavigationController alloc] initWithRootViewController:someViewController];     //NC2

  SomeViewController2 * someViewController2 = [[SomeViewController2 alloc] init];  
  [navigationController presentSomehow:someViewController2 animated:NO completion:nil]; //another pushed to NC2

  [someViewController2 presentViewController:controller animated:NO completion:nil]; //present VC again