gpt4 book ai didi

Swift - 远离模态视图没有正确破坏 ViewController

转载 作者:行者123 更新时间:2023-11-28 08:34:31 24 4
gpt4 key购买 nike

我无法弄清楚如何正确销毁 ViewController。在我的项目中,我有 3 个 View Controller 。 The Storyboard Layout (IMG)

第一个 View Controller 转到第二个 View Controller 。第二个 View Controller 模态地转到第三个 View 。当第三个 View 在屏幕上时,仍然可以在背景中看到第二个屏幕(第三个 View 具有透明背景)。

但是,当我离开第三个 View Controller 并返回到第一个 View Controller 时,处于后台的第二个 View Controller 不会被破坏。我记录了 View Controller 生命周期事件来说明我的意思:

viewDidAppear - ViewController1
viewWillDisappear - ViewController1
viewDidAppear - ViewController2
viewDidAppear - ViewController3
viewWillDisappear - ViewController3
viewDidAppear - ViewController1

从上面的控制台打印语句可以看出,ViewController2 永远不会在任何地方被销毁。从逻辑上讲,我假设当 VC3 返回到 VC1 时,它会与 ViewController3 一起被销毁。然而,情况并非如此,这很可能是由于模态视图在 Swift 中的工作方式错综复杂。

我该如何解决这个问题?我需要 VC2 来调用 viewWillDisappear

最佳答案

恐怕您误解了 segue。通过 segueViewController3ViewController1 你只是创建了 ViewController1 的另一个实例,它堆叠在 ViewController3。你不会回去的。

您应该使用一个 UINavigationControllerrootViewController 保存到您的 ViewController1segueViewController2modal 按钮 segue 推送到 ViewController3

ViewController3 上,您需要使用 dismissViewControllerAnimated(true) 在代码中以编程方式关闭它,然后执行 navigationController?.popViewControllerAnimated(true) 以回到 ViewController1

关于Swift - 远离模态视图没有正确破坏 ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38171431/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com