双向绑定,用于父子视图的双向传递。修改子视图的Binding值,会触发父视图的State改变重新渲染body。修改父视图的State的值同样也会重新通过Binding传递给子视图,触发重新渲染body。
原理图:
相关代码
struct ContentView: View{
@State private var num:Int = 0;
var body: some View{
// Text("hello World")
VStack{
//添加一个$前缀,就可以将State转为Binding。
Stepper("计数器", value:$num).padding(50)
//self.$subCounter.wrappedValue”的用法,
//Binding对象是一个Binding类型的变量,当只需要使用值的时候,需要访问其.warppedValue属性来访问里面包裹的值。
Text("\(self.$num.wrappedValue)")//self.num
}
}
}
struct BindingTestView: View{
//双向绑定,用于父子视图的双向传递。修改子视图的Binding值,会触发父视图的State改变重新渲染body。
//反向亦然
@Binding var subCounter:Int
//@State private var num: Int = 0
var body: some View{
VStack{
Stepper("计数器", value: $subCounter)
Text("\(subCounter)")
}
}
}