当嵌入到 NavigationView SwiftUI 中时,在 SwiftUI 中制作列表部分 non-collapsible
Make List Sections non-collapsible in SwiftUI when embedded into a NavigationView SwiftUI
当我将分组为 Section
的 List
嵌入到 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
只需在 listStyle 修饰符中使用 SidebarListStyle
.listStyle(SidebarListStyle())
万一您遇到这个问题...这个问题与 OP 和 @Danial 提到的嵌入 NavigationView 没有任何关系。这是因为它嵌入在示例代码中 NavigationView 第一级的 VStack 中。对我来说似乎是一个 SwiftUI 错误。
当我将分组为 Section
的 List
嵌入到 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
只需在 listStyle 修饰符中使用 SidebarListStyle
.listStyle(SidebarListStyle())
万一您遇到这个问题...这个问题与 OP 和 @Danial 提到的嵌入 NavigationView 没有任何关系。这是因为它嵌入在示例代码中 NavigationView 第一级的 VStack 中。对我来说似乎是一个 SwiftUI 错误。