debugging SwiftUI视图层次结构和视图标识调试

6ss1mwsb  于 2023-06-06  发布在  Swift
关注(0)|答案(2)|浏览(424)

我有一个主列表->详细视图UI。看起来不错
但是当我显示一个列表元素的详细视图时,视图有时会意外地返回到列表。
主列表可以在后台更新,当发生这种情况时,列表会重新排序。我认为是什么导致了“回归”。根据这个SO问题SwiftUI Navigation View goes back in hierarchy和这个WWDC video,似乎我的观点同一性不是恒定的。
如何读取和调试视图层次结构(我指的是SwiftUI视图,而不是对应的UIViews)及其标识?
编辑:修改了标题,使其更符合问题。

dffbzjpn

dffbzjpn1#

似乎没有办法观察SwiftUI视图层次结构或获取SwiftUI视图标识。
然而,像.onAppear.onDisappear这样的带有调试打印的修饰符是帮助我找到视图被重新创建而不是被保留的地方的工具。
最终的原因是我在某处留下了一个UUID()。
我强烈推荐这个WWDC Video。它解释了SwiftUI视图的生命周期。

lf5gs5x2

lf5gs5x22#

您可以用途:

var body: some View {
#if DEBUG
        let _ = Self._printChanges()
#endif

来找出为什么这个视图被重绘。

相关问题