我通过使用模态segue从一个视图控制器转换到另一个UINavigationController
。对我来说重要的是这个视图控制器(及其子视图控制器)保留在内存中,以便保持特定的引用。虽然显然这没有发生。调试viewWillAppear
函数时,rootViewController
(viewControllers [0])引用指向调用之间的不同内存地址(并包含nil值,我的实际问题)。
现在有两种可能导致这个问题的可能性:
但是为了让它真的令人困惑,它们都没有发生; UINavigationController和rootViewController都没有被破坏(viewDidUnload没有被调用!)。
编辑:进一步调查发现,UINavigationController实际上是为每个模态segue重新创建的。我希望通过维护一个属性,我可以解决问题。
答案 0 :(得分:0)
我最终创建了自己的IBAction函数,并手动显示控制器。这工作得很好,并在不到5分钟的时间内编码。只需要在故事板上的ViewDidLoad上启动控制器一次。
答案 1 :(得分:0)
在主视图控制器中创建一个强引用,并将新视图控制器指向该属性。只要您需要,这将保持视图,尽管不建议对n个视图使用,因为它会破坏导航控制器处理自己的创建和删除视图的目的。