繁体   English   中英

如何强制刷新 SwiftUI 视图?

[英]How to force a refresh of a SwiftUI View?

我有一个带有.disabled()条件的按钮,它是我的ObservableObject model class 的计算属性。这意味着我无法将其@Published

是这样的:

class MyModel : ObservableObject {
    var isDisabled: Bool {
        if ... {
            return true
        }
        else {
            return false
        }
    }
}

struct SettingsNewsSubscriptionsView : View {
    @ObservedObject var model: MyModel

    var body: some View {
        ...

        Button("Save") {
            Task {
                // Saves to backend asynchronously, then updates MyModel which changes isDisabled.
            }
        }
        .disabled(model.isDisabled)
    }
}

在某些时候isDisabledfalse 当按钮被点击时,一些东西被异步保存,之后MyModel被更新,这将导致isDisabled变为true

因为isDisabled不是@Published ,所以一旦isDisabled变为true按钮就不会更新。

如何触发 SwiftUI View的刷新,在本例中是从Task中显式触发Button

您可以尝试存储属性而不是计算属性,这样您就可以使用@Published

称呼

model.objectWillChange.send()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM