Post

Replies

Boosts

Views

Activity

`List.init(_:selection:rowContent:)` with `NavigationLink.init(_:value:)` not working as expected
I'm working on a SwiftUI app that includes an asset manager that allows users to import and edit custom assets. When browsing available assets, users can choose to view the assets in a List view that is populated by a SectionedFetchRequest. Each row of the list is a NavigationLink that presents a detail view for the asset that the user tapped on. I've got all of this working nicely so far. The issue I'm running into now is adding multi-select support to the list so users can select and modify multiple assets at once. When I add the selection: parameter to the list, the NavigationLink in each row no longer presents a detail view when tapped. Below is a very simplified example of what I'm trying to accomplish: struct TestView: View { let fruits = ["Apple", "Banana", "Cherry"] @State private var selection: Set<String> = Set() var body: some View { NavigationStack { List(fruits, id: \.self, selection: $selection) { fruit in NavigationLink(fruit, value: fruit) } .navigationDestination(for: String.self) { string in Text(string) } .toolbar { EditButton() } } } } However, I noticed that by using a NavigationLink initializer other than .init(_:value:), such as .init(_:destination:), the list works as expected. That is, NavigationLink still presents a detail view when tapped and the list supports multi-select. Again, here's a simplified view: struct TestView: View { let fruits = ["Apple", "Banana", "Cherry"] @State private var selection: Set<String> = Set() var body: some View { NavigationStack { List(fruits, id: \.self, selection: $selection) { fruit in NavigationLink(fruit) { Text(fruit) } } .toolbar { EditButton() } } } } Is this a known bug or is there something else I'm missing? I've tried finding information on this, but have come up short.
0
0
408
Aug ’23