Menu
Coddy logo textTech

@Bindingプロパティ

CoddyのSwiftジャーニー「SwiftUI入門」セクションの一部。レッスン 39/50。

画面が大きくなったら、より小さなビューに分割します。親の状態を変更する必要がある子ビューは、値を所有する代わりに@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 が所有する値が 1 つあります。子ビューのステッパーはバインディングを通じてその値を変更し、親ビューのテキストはそれに追従します。@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プレイグラウンド