【发布时间】:2020-08-11 15:37:30
【问题描述】:
我的问题可能是误会的结果,但我想不通,所以在这里:
当使用像 TextField 这样的组件或任何其他需要绑定作为输入的组件时
TextField(title: StringProtocol, text: Binding<String>)
还有一个带有 ViewModel 的 View,我自然认为我可以简单地将我的 ViewModel @Published 属性作为绑定传递:
class MyViewModel: ObservableObject {
@Published var title: String
@Published var text: String
}
// Now in my view
var body: some View {
TextField(title: myViewModel.title, text: myViewModel.$text)
}
但我显然不能,因为发布者不能充当约束力。据我了解,只有@State 属性可以这样做,但所有@State 属性不应该只存在于视图中而不存在于视图模型中吗?或者我可以做这样的事情吗:
class MyViewModel: ObservableObject {
@Published var title: String
@State var text: String
}
如果我不能,当我的文本更新时如何将信息传输到我的 ViewModel?
【问题讨论】: