[英]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)
}
}
在某些时候isDisabled
是false
。 当按钮被点击时,一些东西被异步保存,之后MyModel
被更新,这将导致isDisabled
变为true
。
因为isDisabled
不是@Published
,所以一旦isDisabled
变为true
按钮就不会更新。
如何触发 SwiftUI View
的刷新,在本例中是从Task
中显式触发Button
?
您可以尝试存储属性而不是计算属性,这样您就可以使用@Published
称呼
model.objectWillChange.send()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.