본문 바로가기
SwiftUI

@Binding 은 뭐야?

by 밤새는 탐험가89 2025. 6. 5.
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