המאפיין @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 שואל ערך ממקום אחר.
אתגר
בינוניThemeToggle צריכה להחליף את המצב של darkMode של רכיב האב. שנה את המאפיין שלה ל-@Binding, קשר את Toggle אליו, והעבר את $darkMode מ-ContentView. כשהמתג מופעל, הטקסט חייב להיות Dark theme.
נסו בעצמכם
import SwiftUI
@main
struct CoddyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה מבוא ל-SwiftUI
תרגלו בעצמכם: SwiftUI אונליין