ios - UIViewController 由于另一个最近被解雇而没有被呈现

标签 ios cocoa-touch

我有一个 View Controller MainViewController哪个(通过按钮)允许用户展示/关闭另一个 InventoryViewController模态的。

第三个 View Controller CallViewcontroller然后从 MainViewController 以编程方式呈现在特定的时间间隔。在此之前,InventoryViewController被解雇。

如果 InventoryViewController从未出现,CallViewController没有任何问题。

如果 InventoryViewControllerCallViewController 时可见/存在已启动,似乎也没有任何问题。

但是如果 InventoryViewController呈现然后由用户手动关闭,在任何时候,CallViewController出现应用程序部分卡住并且控制台抛出错误 -

Warning: Attempt to present <CallViewController: 0x17e31bb0> on <MainViewController: 0x18d3fc00> whose view is not in the window hierarchy!

启动代码InventoryViewController来自 MainViewController :
[self performSegueWithIdentifier:@"segueToInventoryView" sender:self];

关闭代码 InventoryViewController来自 MainViewController 内的按钮:
[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];

关闭代码 InventoryViewController以编程方式来自 MainViewController就在 CallViewController 之前被表达:
[self dismissViewControllerAnimated:NO completion:nil];

(我还使用计时器来延迟显示 CallViewController 的方法,以确保 InventoryViewController 已正确关闭)

我猜这个错误是说我不能从 MainViewController 中展示一个模态。因为它不在堆栈的顶部,这表明 InventoryViewController没有被正确解雇。

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

任何帮助表示赞赏。

最佳答案

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

因此,可以在呈现和呈现的 View Controller 上调用 [self dismissViewControllerAnimated:NO completion:nil] 的事实可能需要注意。

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

关于ios - UIViewController 由于另一个最近被解雇而没有被呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33678568/

相关文章:

ios - 头文件和plist文件在框架中的作用是什么?

ios - SharkORM大数据同步流程

ios - 尝试以编程方式更改 Storyboard时出错

iOS 编程 : Problem extending UIButton class

iphone - AVURLAsset 视频缓冲

ios - 让菜单从数组的开头开始

iphone - 为什么 UITextView 使用字符串而不是可变字符串作为其文本属性?

ios - 如何在 iOS 7 上将状态栏内容颜色设置为白色

ios - 在自定义 UIView 中动画化 UIBezierPath 不起作用

ios - 即使具有 1000 内容压缩阻力,UIScrollView 中嵌套 View 中的 UILabel 在自动布局下也会被压缩