TIL64 - swiftui ui property wrapper
SwiftUI에서는 @State
, @Binding
, @ObservableObject
등의 속성 래퍼(property wrapper)를 사용하여 뷰 간에 데이터를 전달합니다. 각각의 래퍼는 다음과 같은 역할을 합니다.
@State
: 뷰 내에서 변경 가능한 값을 저장할 때 사용합니다.@State
속성 래퍼를 사용한 값이 변경되면, 해당 뷰가 다시 그려집니다.@Binding
: 다른 뷰에서 선언된@State
값을 가져오거나, 다른 뷰에서 변경된 값을 현재 뷰의@State
값으로 전달할 때 사용합니다.@ObservableObject
: 다른 뷰와 공유할 수 있는 객체를 선언할 때 사용합니다. 해당 객체가 변경되면, 해당 뷰가 다시 그려집니다.
예를 들어, 다음과 같은 코드에서 Content
뷰에서 SubView
로 text
값을 전달하는 방법을 보여드릴게요.
struct Content: View { @State var text: String = "Hello, World!" var body: some View {VStack { Text(text) SubView(text: $text) } } } struct SubView: View { @Binding var text: String var body: some View { TextField("Enter text", text: $text) } }
댓글
