@Binding 프로퍼티
Coddy Swift 여정의 SwiftUI 입문 섹션에 포함된 레슨. 50개 중 39번째.
화면이 커지면 더 작은 뷰로 나눕니다. 부모 뷰의 상태를 변경해야 하는 자식 뷰는 값을 소유하는 대신 @Binding을 선언합니다:
struct VolumeControl: View {
@Binding var volume: Int
var body: some View {
Stepper("Volume: \(volume)", value: $volume, in: 0...10)
}
}부모는 @State를 유지하고 $를 사용해 이에 대한 바인딩을 전달합니다:
struct ContentView: View {
@State private var volume = 5
var body: some View {
VStack {
VolumeControl(volume: $volume)
Text(volume == 0 ? "Muted" : "Playing")
}
}
}ContentView가 소유하는 값이 하나 있습니다. 자식 뷰의 스테퍼는 바인딩을 통해 이 값을 변경하고, 부모 뷰의 텍스트는 그에 따라 바뀝니다. @State는 값을 소유하고, @Binding은 다른 곳에서 값을 빌려옵니다.
챌린지
중급ThemeToggle은 부모의 darkMode를 전환해야 합니다. 해당 속성을 @Binding으로 변경하고, Toggle을 이에 바인딩한 다음 ContentView에서 $darkMode를 전달하세요. 토글이 켜져 있을 때 텍스트는 Dark theme으로 표시되어야 합니다.
직접 해보기
import SwiftUI
@main
struct CoddyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
SwiftUI 입문의 모든 레슨
직접 연습해 보세요: Swift 플레이그라운드