Since List is very versatile, I'm not sure why it cannot be used here. For example, the following works fine in iOS and iPadOS (by persisting the selection): import SwiftUI class Q708440NavigationModel: ObservableObject { @Published var selectedThingId: Thing? } struct Thing: Identifiable, Hashable { let id: UUID = UUID() let name: String } class ThingData: ObservableObject { @Published var things: [Thing] = [ Thing(name: One), Thing(name: Two), Thing(name: Three) ] } struct ThingDetail: View { let thing: Thing @EnvironmentObject var navigationModel: Q708440NavigationModel var body: some View { Text(Thing: (thing.name)) } } struct SomeOtherViewHere: View { var body: some View { Text(Some other view) } } @main struct Q708440App: App { @StateObject var navigationModel = Q708440NavigationModel() @StateObject var thingData = ThingData() var body: some Scene { WindowGroup { Q708440(things: $thingData.things) .environmentObject(navigationModel) } } } struct Q708440: View { @Binding var things: [Thing] @EnvironmentO
Topic:
UI Frameworks
SubTopic:
SwiftUI
Tags: