当嵌入到 NavigationView SwiftUI 时,使列表部分在 SwiftUI 中不可折叠

Tam*_*mas 4 swiftui swiftui-list swiftui-navigationview

当我将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()
    }
}
Run Code Online (Sandbox Code Playgroud)

带有可折叠部分的列表

Asp*_*eri 6

它是应用的默认样式,您可以将其明确设置为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
Run Code Online (Sandbox Code Playgroud)


Anu*_*ugh 5

从 iOS 17 开始,部分不再可折叠(在 Xcode 15b2 上)。

要启用折叠/展开行为:

public init(isExpanded: Binding<Bool>, @ViewBuilder content: () -> Content, @ViewBuilder header: () -> Parent)
Run Code Online (Sandbox Code Playgroud)