Ios 由于另一个最近被解除,UIViewController未显示

Ios 由于另一个最近被解除,UIViewController未显示,ios,cocoa-touch,Ios,Cocoa Touch,我有一个视图控制器MainViewController,它(通过按钮)允许用户以模式显示/取消另一个InventoryViewController 然后,第三个视图控制器CallViewcontroller以特定的时间间隔从MainViewController以编程方式呈现。在此之前,InventoryViewController将被解除 如果从不显示InventoryViewController,则显示CallViewController时不会出现任何问题 如果启动CallViewContro

我有一个视图控制器
MainViewController
,它(通过按钮)允许用户以模式显示/取消另一个
InventoryViewController

然后,第三个视图控制器
CallViewcontroller
以特定的时间间隔从
MainViewController
以编程方式呈现。在此之前,
InventoryViewController
将被解除

如果从不显示
InventoryViewController
,则显示
CallViewController
时不会出现任何问题

如果启动
CallViewController
时,
InventoryViewController
可见/存在,则似乎也没有任何问题

但是,如果出现
InventoryViewController
,则用户可以在任何时候手动解除,当出现
CallViewController
时,应用程序部分冻结,控制台抛出错误-

Warning: Attempt to present <CallViewController: 0x17e31bb0> on <MainViewController: 0x18d3fc00> whose view is not in the window hierarchy!
MainViewController内的按钮中关闭InventoryViewController的代码:

[self performSegueWithIdentifier:@"segueToInventoryView" sender:self];
[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
在显示CallViewController之前,从MainViewController以编程方式关闭InventoryViewController的代码:

[self dismissViewControllerAnimated:NO completion:nil];
(我还使用计时器延迟显示
CallViewController
的方法,以确保
InventoryViewController
已正确关闭)

我猜错误是说我不能从
MainViewController
显示模态,因为它不在堆栈的顶部,这表明
InventoryViewController
没有被正确地排除

最初我的代码是为iOS7编写的,现在BaseSDK是iOS9(通常一年后我会回到这个项目和iOS编程)。据我所知,这个问题以前没有发生过。那么这是由iOS8/9带来的变化引起的,还是这里发生了其他事情


感谢您的帮助。

找到了解决方案,我在
MainViewController
中设置了一个标志,用于检查
InventoryViewController
是否已被解除,但设置不正确。这导致调用了两次
[self dismissionviewcontrolleranimated:NO completion:nil]
,第二次调用实际上是通过将调用发送给它的父对象来解除
MainViewController

因此,在呈现和呈现视图控制器上都可以调用[self-dismissViewControllerAnimated:NO completion:nil]这一事实可能值得注意

上面概述的代码在iOS8/9中似乎运行良好