@Binding
- 데이터의 값을 변경하고 다른 뷰와 동기화하는 프로퍼티 래퍼(property wrapper)
@State와 @Binding
@State
에서 저장된 뷰의 상태를 다른 뷰와 공유하고 변경할 수 있게 한다.
@State
는 값이 변경될 때 뷰를 다시 그리고, @Binding
은 값이 변경될 때 뷰 간의 데이터를 동기화한다.
@Binding
을 선언할 때에는 $
를 붙여 사용한다.
struct BindingStudy: View {
@State var backgroundColor: Color = Color.green
var body: some View {
ZStack {
backgroundColor
.edgesIgnoringSafeArea(.all)
ButtonView(backgroundColor: $backgroundColor)
}
}
}
struct ButtonView: View {
@Binding var backgroundColor: Color
var body: some View {
Button {
backgroundColor = Color.orange
} label: {
Text("Button")
.foregroundColor(.white)
.padding()
.padding(.horizontal)
.background(.blue)
.cornerRadius(10)
}
}
}