我有一个带有.disabled()
条件的按钮,它是我的ObservableObject
模型类的一个计算属性。这意味着我不能使它成为@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
的刷新,在本例中是Button
,它是从Task
中显式触发的?
2条答案
按热度按时间ovfsdjhp1#
呼叫
7kqas0il2#
您可以尝试将属性设置为存储属性而不是计算属性,这样就可以使用@Published