Quelles sont les exigences pour une liste extensible gratuite dans SwiftUI?

Dec 02 2020

Quelque part dans mon code, j'ai cette jolie liste standard avec des sections:

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

D'une manière ou d'une autre, avec ce code, les sections sont extensibles / réductibles, ce qui me rend heureux, mais je ne sais pas pourquoi. Je suis particulièrement frustré parce que je veux reproduire ce comportement ailleurs avec un code similaire et ne pas obtenir l'expansion / réduction.

Quelle est la condition pour l'obtenir automatiquement?

Réponses

2 Asperi Dec 02 2020 at 15:43

Il est activé par le style de liste de la barre latérale (qui dans certaines conditions est considéré comme par défaut), que vous pouvez utiliser explicitement

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

comme alternative, vous pouvez utiliser DisclosureGroupexplicitement pour avoir un comportement de divulgation pour les sections, comme danshttps://stackoverflow.com/a/63228810/12299030