Was sind die Voraussetzungen für eine kostenlose erweiterbare Liste in SwiftUI?

Dec 02 2020

Irgendwo in meinem Code habe ich diese hübsche Standardliste mit Abschnitten:

var body: some View {
    List {
        ForEach(userData.groupedBookings) { group in
            Section(header: Text(group.key)) {
                ForEach(group.items) { booking in
                    LessonRow(booking: booking)
                }
            }
        }
    }
}

Irgendwie sind die Abschnitte mit diesem Code erweiterbar / reduzierbar, was mich glücklich macht, aber ich weiß nicht warum. Ich bin besonders frustriert, weil ich dieses Verhalten an anderer Stelle mit ähnlichem Code reproduzieren möchte und nicht das Erweitern / Reduzieren bekomme.

Was sind die Voraussetzungen, um dies automatisch zu erhalten?

Antworten

2 Asperi Dec 02 2020 at 15:43

Es wird durch den Listenstil der Seitenleiste aktiviert (der unter bestimmten Bedingungen als Standard betrachtet wird), den Sie explizit verwenden können

List {
    ForEach(userData.groupedBookings) { group in
        Section(header: Text(group.key)) {
            ForEach(group.items) { booking in
                LessonRow(booking: booking)
            }
        }
    }
}
.listStyle(SidebarListStyle())

Alternativ können Sie DisclosureGroupexplizit das Offenlegungsverhalten für Abschnitte wie in verwendenhttps://stackoverflow.com/a/63228810/12299030