首页 > 解决方案 > 在 UIViewController 被解除后尝试再次呈现它

问题描述

所以我有视图控制器 A、B 和 C。从 A,我在当前上下文中模态地呈现 VC B。VC B 中有一个按钮,我从那里展示 VC C(使用 segue)

现在在解除 Viewcontroller C 时,我试图解除 VC B 并从 VC A 运行一些函数,该函数再次基于某些逻辑呈现 VC B。但在这种情况下,我得到这个错误“ Attempt to present UIViewController on UIViewController whose view is not in the window hierarchy

我曾尝试使用完成处理程序 dispatchQueue(after:) 来解散,但这些都不起作用。

相反,我UIButton在 VC A 中附加了一个,它运行相同的逻辑来呈现 VC B,并且它运行正确并且没有显示任何错误。

在这种情况下我错过了什么?

标签: iosuinavigationcontrollerswift4segue

解决方案


我希望这两个解决方案对您有所帮助。

我遇到了同样的问题,这两个解决方案帮助我解决了这个问题。

首先: 在 VC C viewDidDisappear 或按钮单击方法中发布通知,并将其接收器添加到 VC B 上,您希望在关闭 VC C 后关闭它。

第二: 您可以创建一个协议单击按钮时调用您的协议方法并将您的数据传递给您的 viewController。


推荐阅读