尝试设置它时,使用rootViewController的行为异常

问题描述 投票:-1回答:1

我在导航控制器的顶部有一个模式视图。

我希望破坏整个堆栈并重新创建一个新堆栈(重新加载)。

但是,当将新的分配给window.rootViewController时,在运行时会出现警告,并且不会释放视图控制器。

[为了使事情变得更复杂,我在重新加载后自动“自动”导航到模态视图控制器,并且

我已附上reprex,以演示将要出现的问题。例如。如果按原样运行,则在iOS 13上,计数器会从1跳到3,而在iOS 12上,计数器从1跳到2。两者都在泄漏内存(某些或所有视图控制器未卸载)。

ios swift cocoa-touch
1个回答
0
投票

主要问题是,不管您如何替换视图层次结构,您的presented VC都将关闭,这将向您的“ pushedVC”发送一条viewWillAppear消息...此时,“ pushedVC”将立即加载并重新显示“ triggerVC”

您可能想要做的是:

  • jumpToModalVC等于false,直到要使用它
  • 在所显示的“ triggerVC”中点击按钮,关闭模态((自身)
  • 完成解雇后,将jumpToModalVC设置为true并重建/重置层次结构

注意:

从每个VC的viewWillAppear进行的链锁调用几乎总是导致:

开始/结束外观转换的不平衡呼叫

为避免这种情况,最好从viewDidAppear触发触发选择>

[如果需要,您可以将我添加为GitHub存储库上的“协作者”(我的GitHub用户ID为DonMag,我可以将所做的更改作为新分支推送。

© www.soinside.com 2019 - 2024. All rights reserved.