模态序列会创建新对象吗?

Posted

技术标签:

【中文标题】模态序列会创建新对象吗?【英文标题】:Do modal segues create new objects? 【发布时间】:2012-01-25 14:52:58 【问题描述】:

我通过使用模态 segue 从一个视图控制器转换到另一个 UINavigationController。对我来说,这个视图控制器(及其子视图控制器)保留在内存中以便保持特定的引用很重要。尽管显然这并没有发生。在调试viewWillAppear 函数时,rootViewController (viewControllers[0]) 引用指向调用之间的不同内存地址(并且包含 nil 值,我的实际问题)。 现在有两种可能导致此问题:

UiNavigationController 被销毁 rootViewController 被销毁

但更令人困惑的是,它们都没有发生; UINavigationController 和 rootViewController 都没有被破坏(未调用 viewDidUnload!)。

编辑:进一步调查发现 UINavigationController 确实为每个模态转场重新创建。我希望通过维护一个属性我可以解决问题。

【问题讨论】:

【参考方案1】:

我最终创建了自己的 IBAction 函数,手动呈现控制器。这工作得很好,并且在不到 5 分钟的时间内完成了编码。只需在情节提要的 ViewDidLoad 上初始化一次控制器。

【讨论】:

【参考方案2】:

在主视图控制器中创建一个强引用,并将您的新视图控制器指向该属性。这将根据需要保留视图,尽管不建议在 n 个视图中这样做,因为它违背了导航控制器处理其自己的视图创建和删除的目的。

【讨论】:

以上是关于模态序列会创建新对象吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何在模态窗口 [ANGULAR 5] 内创建路由?

使用jQuery创建模态窗口登陆效果

如何在模态呈现的视图控制器上执行呈现模态序列?

在wagtail-admin中有打开模态窗口的正确方法吗?

MFC 创建模态与非模态对话框

如何在 xcode 中添加自定义模态序列?