Beobachtbare Objekte
Teil des Abschnitts Einführung in SwiftUI der Swift-Journey von Coddy. Lektion 40 von 50.
Daten, die mehrere Ansichten gemeinsam nutzen oder die eine eigene Logik haben, gehören in eine Klasse. Sie entspricht ObservableObject, und jede Eigenschaft, die der Bildschirm anzeigt, wird mit @Published gekennzeichnet:
class Cart: ObservableObject {
@Published var count = 0
func add() {
count += 1
}
}Die Ansicht, die das Objekt erstellt, speichert es mit @StateObject. SwiftUI hält dieses eine Objekt am Leben, solange die Ansicht auf dem Bildschirm angezeigt wird, und zeichnet die Ansicht neu, wann immer sich eine veröffentlichte Eigenschaft ändert:
struct ContentView: View {
@StateObject private var cart = Cart()
var body: some View {
VStack {
Text("Items: \(cart.count)")
Button("Add to cart") {
cart.add()
}
}
}
}Eine untergeordnete Ansicht, die ein vorhandenes Objekt von ihrer übergeordneten Ansicht erhält, markiert es stattdessen mit @ObservedObject: Sie überwacht das Objekt, besitzt es aber nicht.
Aufgabe
MittelDie Klasse Scoreboard ist nicht mit dem Bildschirm verbunden. Mache sie zu einem ObservableObject mit einem @Published-points, speichere sie in ContentView mit @StateObject und sorge dafür, dass die Schaltfläche scoreboard.score() aufruft. Der Text muss nach einem Tippen Points: 10 lauten.
Probier es selbst
import SwiftUI
@main
struct CoddyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Einführung in SwiftUI
4Modifikatoren
InnenabstandHintergründeReihenfolge der ModifikatorenRahmen und FormenRückblick – Badge Maker10Projekt – Coddy Coffee
ProjektübersichtGetränkeansichtenÜbe selbstständig: Swift-Playground