import SwiftUI struct MainViewBig: View { var body: some View { NavigationView { SidebarView() Text("Master") Text("Detail") } } } struct SidebarView: View { @State var selection: String? @State private var showAddPlateNumberView = false @FetchRequest(entity: CDVehicle.entity(), sortDescriptors: []) var vehicles: FetchedResults var body: some View { List(selection: $selection) { Section("History") { NavigationLink(destination: VehiclesListView(vehicles: vehicles)) { Label("All", systemImage: "car.2") .badge(vehicles.count) } NavigationLink(destination: VehiclesListView(vehicles: vehicles.filter(\.unrecognized))) { Label("Unreconized", systemImage: "eye.slash") .badge(vehicles.filter(\.unrecognized).count) } NavigationLink(destination: VehiclesListView(vehicles: vehicles.filter(\.outdated))) { Label("Outdated", systemImage: "wind") .badge(vehicles.filter(\.outdated).count) } } .collapsible(false) Section("Other") { Label("Recordings", systemImage: "waveform.path") Label("Search", systemImage: "magnifyingglass") } .collapsible(false) } .frame(minWidth: 180) .sheet(isPresented: $showAddPlateNumberView, onDismiss: { print("Dismiss") }, content: { CheckNumberPopup() }) .toolbar { ToolbarItem { Spacer() } ToolbarItem { Button { self.showAddPlateNumberView = true } label: { Image(systemName: "plus") } } } } } struct VehiclesListView: View where VehicleCollection: RandomAccessCollection, VehicleCollection.Element == CDVehicle { var vehicles: VehicleCollection @State var selection: CDVehicle? var body: some View { List(selection: $selection) { ForEach(vehicles, id: \.self) { vehicle in let number = PlateNumber(vehicle.number ?? "") PlateNumberView(number: number, unrecognized: vehicle.unrecognized, outdated: vehicle.outdated) } } } } struct MainViewBig_Previews: PreviewProvider { static var previews: some View { MainViewBig() } }