Quais são os requisitos para uma lista expansível gratuita no SwiftUI?

Dec 02 2020

Em algum lugar do meu código, tenho esta lista bastante padrão com seções:

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

De alguma forma, com esse código, as seções são expansíveis / recolhíveis, o que me deixa feliz, mas não sei por quê. Estou especialmente frustrado porque desejo reproduzir esse comportamento em outro lugar com código semelhante e não obter a expansão / recolhimento.

Quais são os requisitos para obter isso automaticamente?

Respostas

2 Asperi Dec 02 2020 at 15:43

É ativado pelo estilo de lista da barra lateral (que em algumas condições são consideradas como padrão), que você pode usar explicitamente

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

como alternativa, você pode usar DisclosureGroupexplicitamente para ter um comportamento de divulgação para as seções, como emhttps://stackoverflow.com/a/63228810/12299030