728x90
SMALL
@Binding은 뷰 간 상태(State)를 공유할 때 사용하는 속성 래퍼
즉, 어떤 상위 뷰(부모)가 가지고 있는 상태 값을 하위 뷰(자식)에서 읽고, 변경할 수 있도록 연결해주는 역할
🔧 간단한 정의
@Binding var isSet: Bool
이 코드는 isSet이라는 불리언 값을 외부(보통 부모 뷰)로부터 바인딩 받아서 사용하겠다는 뜻
→ 즉, 이 뷰 안에서 isSet 값을 변경하면 부모 뷰의 상태 값도 함께 변경
@State = 뷰 내부에서 직접 상태를 소유하고 변경
@Binding = 다른 뷰(보통 부모 뷰)의 상태를 참조해서 읽고 쓰기 가능
1. 부모 뷰
struct ParentView: View {
@State private var isFavorite = false
var body: some View {
FavoriteButton(isSet: $isFavorite) // $를 붙여 바인딩 전달
}
}
2. 자식 뷰
struct FavoriteButton: View {
@Binding var isSet: Bool
var body: some View {
Button(action: {
isSet.toggle() // 부모 뷰의 상태를 직접 바꿈!
}) {
Image(systemName: isSet ? "star.fill" : "star")
}
}
}
FavoriteButton은 isSet이라는 값을 자기 자신이 갖고 있지 않지만, 부모에게서 바인딩 받아와서 사용
- @Binding은 다른 뷰의 상태를 공유할 때 사용함
- 상태를 직접 만들지는 않고, 외부(부모)의 상태를 읽고 수정만 함
- 부모는 @State, 자식은 @Binding
728x90
LIST
'SwiftUI' 카테고리의 다른 글
| @Environment(ModelData.self) var modelData 에서 @Environment는 뭐야? (0) | 2025.06.05 |
|---|---|
| @Observable 이 뭐야? (0) | 2025.06.05 |
| @State란? (0) | 2025.06.05 |
| Hashable, Codable 뭐여? (0) | 2025.06.04 |
| Spacer() (0) | 2024.12.22 |