当嵌入到 NavigationView SwiftUI 中时,在 SwiftUI 中制作列表部分 non-collapsible

Make List Sections non-collapsible in SwiftUI when embedded into a NavigationView SwiftUI

当我将分组为 SectionList 嵌入到 NavigationView 中时,headers 部分变得可折叠。我想保留它们 non-collapsible,就像 List 没有嵌入到 NavigationView.

中一样

我当前的代码(带有 NavigationView):

import SwiftUI

struct MyGroup {
    var name:String, items:[String]
}

struct ContentView: View {
    var groups : [MyGroup] = [
        .init(name: "Animals", items: ["","","","","","","",""]),
        .init(name: "Vehicles", items: ["","","","","","","","⛵️"])]
    
    var body: some View {
        NavigationView {
            VStack {
                List {
                    ForEach(groups, id: \.self.name) { group in
                        Section(header: Text(group.name)) {
                            ForEach(group.items, id:\.self) { item in
                                Text(item)
                            }
                        }
                    }
                }
            }.navigationTitle("collections")
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

这是应用的默认样式,您可以像下面那样为 List 显式设置它(使用 Xcode 12 / iOS 14 测试)

    List {
        ForEach(groups, id: \.self.name) { group in
            Section(header: Text(group.name)) {
                ForEach(group.items, id:\.self) { item in
                    Text(item)
                }
            }
        }
    }.listStyle(InsetGroupedListStyle()) // or GroupedListStyle

backup

只需在 listStyle 修饰符中使用 SidebarListStyle

.listStyle(SidebarListStyle())

万一您遇到这个问题...这个问题与 OP 和 @Danial 提到的嵌入 NavigationView 没有任何关系。这是因为它嵌入在示例代码中 NavigationView 第一级的 VStack 中。对我来说似乎是一个 SwiftUI 错误。