如何重新渲染SwiftUI视图

问题描述

我有一个主页,该页面可以转到没有NavigationLinks的其他视图,而是具有isActive状态并弹出到根目录的解雇,这样,我被告知,我们的应用程序使用的内存较少,因为它本质上是循环的。因此,该视图永远不会再导航到该视图,而是始终存在,因此,永远不会重新评估@State vars。例如,在我们的主页中,我有以下内容

@State var showSwingAgainSheet = appDelegate.swing?.isRecorded ?? false

其中引用Core Data变量,以后用于显示工作表:

.modifier(SaveOrDeleteRecordingSheetView(isPresented: $showSwingAgainSheet))

当Core Data变量设置为true时,除非我强制关闭应用程序,否则不会弹出工作表

我曾考虑使用@ Environment,@ ObservableObject,但无法弄清楚。解决此问题的最佳方法是什么?

解决方法

this可能有帮助吗?更改.id()修饰符将重新加载视图,从而导致@State变量恢复为默认状态。由于默认状态是三元运算符,因此在重新加载视图时可能会重新评估它。