Search code examples
swiftswiftuiswiftui-listswiftui-navigationlink

SwiftUI List disclosure indicator without NavigationLink


I am searching for a solution to show the disclosure indicator chevron without having the need to wrap my view into an NavigationLink. For example I want to show the indicator but not navigate to a new view but instead show a modal for example.

I have found a lot solutions that hide the indicator button but none which explains how to add one. Is this even possible in the current SwiftUI version ?

struct MyList: View {
    var body: some View {
        NavigationView {
        List {
            Section {
                Text("Item 1")
                Text("Item 2")
                Text("Item 3")
                Text("Item 4")

            }
        }
    }
}

For example I want to add the disclosure indicator to Item 1 without needing to wrap it into an NavigationLink

I already tried to fake the indicator with the chevron.right SF Symbol, but the symbol does not match 100% the default iOS one. Top is default bottom is chevron.right.

Disclosure Button Image


Solution

  • Hopefully, this is what you are looking for. You can add the item to a HStack and with a Spacer in between fake it that its a Link:

    HStack {
                        Text("Item 1")
                        Spacer()
                        Button(action: {
    
                        }){
                            Image(systemName: "chevron.right")
                                .font(.body)
                        }
                    }