1

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

  • UiNavigationController 被销毁
  • rootViewController 被销毁

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

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

4

2 回答 2

0

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

于 2012-01-26T17:00:49.397 回答
0

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

于 2014-08-21T02:07:42.290 回答