首页 > 解决方案 > 当嵌入到 NavigationView SwiftUI 中时,使列表部分在 SwiftUI 中不可折叠

问题描述

当我将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()
    }
}

带有可折叠部分的列表

标签: swiftuiswiftui-listswiftui-navigationview

解决方案


它是应用的默认样式,您可以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

推荐阅读