双向绑定(@publish @binding @ObservedObject ObservedObject)
示例
import SwiftUI
// 模型
class DataModel: ObservableObject {
@Published var text: String = "Initial Text" // 被观察的状态
}
struct ParentView: View {
@StateObject private var model = DataModel() // 父视图的模型
var body: some View {
VStack {
ChildView(text: $model.text) // 传递绑定
Text("Parent Text: \(model.text)") // 显示父视图的文本
.padding()
}
}
}
struct ChildView: View {
@Binding var text: String // 使用 @Binding 接收父视图的状态
var body: some View {
VStack {
TextField("Enter text", text: $text) // 修改 @Binding 会更新父视图的状态
.textFieldStyle(RoundedBorderTextFieldStyle())
.padding()
Button("Change Parent Text") {
text = "Updated from Child" // 更新 @Binding 会反映到父视图
}
}
}
}说明
总结
Last updated