אובייקטים נצפים
חלק מהיחידה מבוא ל-SwiftUI במסלול ה-Swift של Coddy. שיעור 40 מתוך 50.
נתונים שכמה תצוגות חולקות, או שיש להם לוגיקה משלהם, שייכים למחלקה. היא תואמת ל־ObservableObject, וכל מאפיין שמוצג במסך מסומן ב־@Published:
class Cart: ObservableObject {
@Published var count = 0
func add() {
count += 1
}
}התצוגה שיוצרת את האובייקט שומרת אותו באמצעות @StateObject. SwiftUI משאירה את האובייקט הזה בחיים כל עוד התצוגה מוצגת על המסך, ומציירת מחדש את התצוגה בכל פעם שמאפיין שפורסם משתנה:
struct ContentView: View {
@StateObject private var cart = Cart()
var body: some View {
VStack {
Text("Items: \(cart.count)")
Button("Add to cart") {
cart.add()
}
}
}
}תצוגת בת שמקבלת אובייקט קיים מתצוגת האב שלה מסמנת אותו במקום זאת בתור @ObservedObject: היא עוקבת אחר האובייקט אך אינה הבעלים שלו.
אתגר
בינוניהמחלקה Scoreboard אינה מחוברת למסך. הפוך אותה ל-ObservableObject עם points מסוג @Published, שמור אותה ב-ContentView באמצעות @StateObject, ודאג שהכפתור יקרא ל-scoreboard.score(). לאחר הקשה אחת, הטקסט חייב להציג Points: 10.
נסו בעצמכם
import SwiftUI
@main
struct CoddyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה מבוא ל-SwiftUI
תרגלו בעצמכם: SwiftUI אונליין