אובייקטי סביבה
חלק מהיחידה מבוא ל-SwiftUI במסלול ה-Swift של Coddy. שיעור 41 מתוך 50.
העברת אובייקט דרך כל תצוגה עד לזו שזקוקה לו נעשית מייגעת. שימו אותו במקום זאת בסביבה, וכל תצוגה שמתחת יכולה לקרוא אותו:
@StateObject private var cart = Cart()
var body: some View {
NavigationStack {
ShopView()
}
.environmentObject(cart)
}תצוגה בהמשך מצהירה על מה שהיא צריכה באמצעות @EnvironmentObject, ללא ערך התחלתי:
struct CartBadge: View {
@EnvironmentObject var cart: Cart
var body: some View {
Text("\(cart.count) in cart")
}
}ShopView לא מזכיר את העגלה, אבל CartBadge שבתוכו עדיין מקבל את אותו אובייקט. אם אף תצוגה מעליו לא מספקת לו את .environmentObject, האפליקציה נעצרת עם שגיאה כאשר CartBadge מוצג.
אתגר
בינוניCartBadge צריך להציג את מספר הפריטים בעגלה המשותפת. ספק את cart ל־VStack באמצעות .environmentObject, ושנה את CartBadge כך שיקרא אותו באמצעות @EnvironmentObject. התג צריך להציג 1 in cart לאחר הקשה אחת.
נסו בעצמכם
import SwiftUI
@main
struct CoddyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה מבוא ל-SwiftUI
תרגלו בעצמכם: SwiftUI אונליין