10

当我将List分组嵌入到Sections中时NavigationView,节标题变得可折叠。我想让它们不可折叠,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()
    }
}

带有可折叠部分的列表

4

3 回答 3

15

它是应用的默认样式,您可以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
于 2020-10-14T10:40:41.127 回答
1

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

于 2022-02-17T02:54:41.130 回答
0

只需在 listStyle 修饰符中使用 SidebarListStyle

.listStyle(SidebarListStyle())
于 2021-06-28T06:30:45.780 回答