我有一个主列表->详细信息视图UI。看起来不错。
但是,当我显示其中一个列表元素的详细视图时,该视图有时会意外地返回到列表。
主列表可以在后台更新,当这种情况发生时,列表会被重新排序。我认为是什么导致了";返回";。根据这个SO问题,SwiftUI导航视图回到了层次结构中,对于这个WWDC视频,我的视图身份似乎不是恒定的。
如何读取和调试视图层次结构(我指的是SwiftUI视图,而不是相应的UIViews(及其标识?
编辑:将标题更改为更符合问题。
似乎没有办法观察SwiftUI视图层次结构或获取SwiftUI的视图标识。
然而,像.onAppear
和.onDisappear
这样内置调试打印的修饰符是帮助我找到视图被重新创建而不是保留的位置的工具。
最终的原因是我在某个地方留下了一个UUID((。
我强烈推荐这个WWDC视频。它解释了SwiftUI视图的生命周期。
您可以使用:
var body: some View {
#if DEBUG
let _ = Self._printChanges()
#endif
在您的身体定义中,了解为什么要重新绘制此视图。