Menu
Coddy logo textTech

@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은 다른 곳에서 값을 빌려옵니다.

challenge icon

챌린지

중급

ThemeToggle은 부모의 darkMode를 전환해야 합니다. 해당 속성을 @Binding으로 변경하고, Toggle을 이에 바인딩한 다음 ContentView에서 $darkMode를 전달하세요. 토글이 켜져 있을 때 텍스트는 Dark theme으로 표시되어야 합니다.

직접 해보기

import SwiftUI

@main
struct CoddyApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

SwiftUI 입문의 모든 레슨

직접 연습해 보세요: Swift 플레이그라운드