首页 > 解决方案 > 如何重新渲染 SwiftUI 视图

问题描述

我有一个主页,它在没有 NavigationLinks 的情况下转到其他视图,而是使用 isActive 状态并弹出到根解除,因为这样,我被告知,我们的应用程序使用更少的内存,因为它本质上是循环的。因此,视图永远不会再次导航到它,它始终存在,因此永远不会重新评估 @State 变量。例如,在我们的主页上,我有这个:

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

它指的是核心数据变量,稍后用于显示工作表:

.modifier(SaveOrDeleteRecordingSheetView(isPresented: $showSwingAgainSheet))

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

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

标签: swiftcore-dataswiftuipersistence

解决方案


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


推荐阅读