Menu
Coddy logo textTech

המאפיין @Binding

חלק מהיחידה מבוא ל-SwiftUI במסלול ה-Swift של Coddy. שיעור 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. ה־stepper ברכיב הילד משנה אותו באמצעות הקישור, והטקסט של רכיב האב מתעדכן בהתאם. @State מחזיק בבעלותו ערך; @Binding שואל ערך ממקום אחר.

challenge icon

אתגר

בינוני

ThemeToggle צריכה להחליף את המצב של darkMode של רכיב האב. שנה את המאפיין שלה ל-@Binding, קשר את Toggle אליו, והעבר את $darkMode מ-ContentView. כשהמתג מופעל, הטקסט חייב להיות Dark theme.

נסו בעצמכם

import SwiftUI

@main
struct CoddyApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה מבוא ל-SwiftUI

תרגלו בעצמכם: SwiftUI אונליין