这是目标:
我有一个导航控制器(NC1),它以模态方式呈现一些视图控制器(VC)。当我在该视图控制器中执行某些操作时,我需要(不可见地为用户)关闭VC,关闭NC1,然后呈现另一个导航控制器(NC2)并呈现相同的视图控制器VC。
在iOS 7.0,7.1中,这可以通过这个(略微调整的)代码运行良好:
[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
但是在iOS 8(Xcode 6.0)中,似乎即使在解雇之后,VC仍然处于活动状态,并且应用程序在最后一行崩溃:
应用程序试图以模态方式呈现一个活动控制器......
当然,如果我将代码移动到完成块,则用户可以看到更改(并且很难看)。
有没有办法检查或强制VC退出活动状态,还是用其他方式来模拟iOS 7的行为?
感谢您的回答!