swift - 如何重新渲染 SwiftUI 视图
问题描述
我有一个主页,它在没有 NavigationLinks 的情况下转到其他视图,而是使用 isActive 状态并弹出到根解除,因为这样,我被告知,我们的应用程序使用更少的内存,因为它本质上是循环的。因此,视图永远不会再次导航到它,它始终存在,因此永远不会重新评估 @State 变量。例如,在我们的主页上,我有这个:
@State var showSwingAgainSheet = appDelegate.swing?.isRecorded ?? false
它指的是核心数据变量,稍后用于显示工作表:
.modifier(SaveOrDeleteRecordingSheetView(isPresented: $showSwingAgainSheet))
当核心数据变量设置为 true 时,除非我强制关闭应用程序,否则不会弹出工作表
我曾考虑使用@Environment、@ObservableObject,但无法弄清楚。解决这个问题的最佳方法是什么?
解决方案
这有什么帮助吗?更改 .id() 修饰符会重新加载视图,导致 @State 变量恢复到它们的默认状态。由于默认状态是三元运算符,它可能会在重新加载视图时重新评估它。
推荐阅读
- amazon-web-services - 尝试使用 cloudformation 在 AWS greengrass 版本 2 中创建 iot 组件时出错
- android - Jetpack compose 停止观察数据
- python - 如何优雅地处理 Selenium 中的 NoSuchElementElement 异常?
- visual-studio - 如何在 Visual Studio 2019 编辑器中查找颜色更改的类别
- python-3.x - 如何使用 cartopy 在地磁坐标中绘制数据?
- android - 我们可以在 Android 中使用 SQLite 数据库上的所有 SQL 查询和函数吗?
- loops - 有没有办法摆脱这个循环?(淡入淡出和 LED 的问题)
- css - 如何在悬停时进行特定的边框底部过渡/动画?
- javascript - 在运行函数之前异步/等待返回承诺
- python - Python烧瓶视频流无法处理多个客户端