SwiftUI View和ViewModel修改Binding和Observed变量



我有一个视图和一个ViewModel,并希望在ViewModel中设置一些变量,并在视图中读取和设置它们。在ViewModel中我有一个@Published变量。当我试图修改视图中变量的值时,我得到的错误是:'不能分配给属性:'$testModel'是不可变的'和'不能将'字符串'类型的值分配给'绑定'。有办法做到这一点吗?我现在的代码如下:

<<p>视图/strong>
struct TestView: View {
@ObservedObject var testModel: TestViewModel = TestViewModel()
var body: some View {
VStack(alignment: .center, spacing: 4) {

Button(action: {
$testModel.test = "test2"
}) {
Text("[ Set value ]")
}
}
}
}

ViewModel

class TestViewModel: ObservableObject {
@Published var test = "test"
}

由于您不需要Binding来设置值,因此您不需要$testModel,只需要testModel

将代码改为:

Button(action: {
testModel.test = "test2"
}) {
Text("[ Set value ]")
}

同样值得注意的是,您应该在这里使用@StateObject而不是@ObservedObject,以防止TestViewModel可能被初始化多次。

最新更新