@ObservedObject模型更改后,SwiftUI自定义视图不会更新

时间:2020-08-15 17:34:39

标签: swift swiftui

我创建了一个自定义视图,该视图根据传递的参数是否为nil来显示内容。我面临的问题是,在optionalData更改时,视图没有更新/无效。 optionalData存储在我的模型中。

struct MyUpdatingView {
    var model: Model
    
    var body: some View {
        if model.optionalData == nil { 
             ProgressView()
        } else {
             OptionalDataView(model.optionalData!)
        }
    }

}

型号:

class Model: ObservableObject {

    @Published var optionalData: OptionalData

    init (){
        loadOptionalDataAsync()
    }
}

我面临的问题是在主视图中加载可选数据时视图未更新。但是,有趣的是,我可以添加一个Text(model.optionalData.debugDescription)视图,该视图在加载数据时确实会更新。

任何想法!我可能做错了什么?

1 个答案:

答案 0 :(得分:0)

至少您的model应该是ObservedObject

struct MyUpdatingView {
    @ObservedObject var model: Model     // << here !!
    ...

还要确保在optionalData完成后在DispatchQueue.main上更新loadOptionalDataAsync