手动更新 SwiftUI View
Posted
技术标签:
【中文标题】手动更新 SwiftUI View【英文标题】:Manual update of SwiftUI View 【发布时间】:2019-11-21 06:25:21 【问题描述】:传统上,SwiftUI 应用程序会自动更新其视图以响应任何状态更改。当@State propertyWrapper 检测到任何更新时会发生这种情况。我很好奇,是否可以手动重绘 SwiftUI 视图,而不是依赖@State 数据绑定技术?
【问题讨论】:
你为什么要这样做? SwiftUI 使用的是 MVVM 模式,而不是 MVC。在 MVVM 中,ViewModel 负责重绘视图。因此,更改 ViewModel 将重绘视图。 @Sweeper 我想使用 SwiftUI 作为更高级别框架的渲染层。所以我想在每个事件上重新生成一个新视图,将它与旧视图进行比较,然后手动重绘。 【参考方案1】:您可以使用ObservableObject
对象作为模型,然后调用objectWillChange.send()
来触发刷新
struct MyView : View
@ObservedObject var model: Model
var body: some View ..
class Model: ObservableObject
func reloadView()
objectWillChange.send()
【讨论】:
以上是关于手动更新 SwiftUI View的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI 不会将状态更新为 @ObservedObject cameraViewModel 对象
删除 SwiftUI 后 Firebase Firestore 不更新 UI