在 this cheat sheet 之后,我试图找出 SwiftUI 中的数据流。所以:
这正是我所需要的,所以我的嵌入式模型是:
class SimpleModel: Identifiable, ObservableObject {
@Published var values: [String] = []
init(values: [String] = []) {
self.values = values
}
}
我的 View 有两个字段:struct SimpleModelView: View {
@Binding var model: SimpleModel
@Binding var strings: [String]
var body: some View {
VStack {
HStack {
Text(self.strings[0])
TextField("name", text: self.$strings[0])
}
HStack {
Text(self.model.values[0])
EmbeddedView(strings: self.$model.values)
}
}
}
}
struct EmbeddedView: View {
@Binding var strings: [String]
var body: some View {
VStack {
TextField("name", text: self.$strings[0])
}
}
}
所以我希望当输入字段发生变化时 View 会改变 Text
。它适用于 [String]
但不适用于嵌入式 @Binding 对象:为什么它的行为不同?
最佳答案
发布属性(property)
class SimpleModel: Identifiable, ObservableObject {
@Published var values: [String] = []
和 model
观察到struct SimpleModelView: View {
@ObservedObject var model: SimpleModel
注意:这在那个方向 - 如果你引入了 ObservableObject
那么相应的 View 应该有 ObservedObject
包装器来观察该可观察对象的已发布属性的变化。关于ios - 嵌入式@Binding 不会更改值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63073350/