@ChrisDE
- Should
CarDetailViewModel be created in CarDetailView? - Or should
CarDetailViewModel be created in ContentView and passed to CarDetailView?
ContentView
struct ContentView: View {
@State private var selectedCarID: UUID?
var body: some View {
NavigationSplitView {
CarListView(selectedCarID: $selectedCarID)
} detail: {
if let selectedCarID {
CarDetailView(carID: selectedCarID)
}
}
}
}
CarListViewModel
@Observable
class CarListViewModel {
let cars = [
Car(id: UUID(), name: "aaa"),
Car(id: UUID(), name: "bbb")
]
}
CarListView
import SwiftUI
struct CarListView: View {
@Binding var selectedCarID: UUID?
@State var model = CarListViewModel()
var body: some View {
List(model.cars, selection: $selectedCarID) { car in
VStack(alignment: .leading) {
Text(car.name)
Text("\(car.id)")
}
}
}
}
CarDetailViewModel
@Observable
class CarDetailViewModel {
let carID: UUID
init(carID: UUID) {
self.carID = carID
}
}
CarDetailView
import SwiftUI
struct CarDetailView: View {
@State private var model: CarDetailViewModel
init(carID: UUID) {
let model = CarDetailViewModel(carID: carID)
_model = State(wrappedValue: model)
}
var body: some View {
Text("\(model.carID)")
}
}