UIViewController在解除之前呈现的模态viewController后被取消分配

时间:2015-10-05 20:55:06

标签: ios objective-c uiviewcontroller modalviewcontroller

从最初的ViewController我已经在故事板中使用 ShowDetail segue和performSegueWithIdentifier:方法调用模态地呈现了第二个ViewController。问题是当我用方法dismissViewControllerAnimated:解雇这个模态ViewController时,重新初始化ViewController,再次调用viewDidLoad

我尝试使用推送 segue而不是显示详细信息,并且初始ViewController会在后台保持分配。

可能发生了什么?最初的ViewController甚至从不调用内存警告方法。

1 个答案:

答案 0 :(得分:0)

你试过unwindSegues吗?

*****如果您想快速解决问题,请提前解释,跳至解决方案

首先,如果是ShowDetail,它不是模态视图。试着看看你的情况。 模态segue可以向后传递信息,但比推送信息稍微复杂一些。 如果您以模态方式呈现它,则应使用目前模态而不是 ShowDetail

模式演示文稿始终会占据堆栈中的顶部视图位置,显示详细信息也会起作用,具体取决于视图的设置方式。例如,如果您有一个堆栈中的详细信息视图,那么IT将被替换而不是堆栈顶视图。

尝试选择特定的segue,我特别推荐modal,假设你需要的不仅仅是简单推送(或者Show会关闭问题,相当于之前弃用的推送。如果你只需要简单的东西,Show is is方式)

现在我们已经清除了这一点,可能发生的事情是视图被删除,因为Show Detail 替换了视图而不是推送它们,并且它必须再次执行init。

*****解决方案:*****

然后解决方案不应该在替换和重新初始化dismissViewControllerAnimated:时失去视图。 如果你使用展开segues,视图应该被替换但是由ARC保留。

以下链接在网上有关于如何使用它的最佳解释:

  

What are Unwind segues for and how do you use them?