将标题添加到 OutlineGroup/DisclosureGroup [英] Adding headers to OutlineGroup / DisclosureGroup
本文介绍了将标题添加到 OutlineGroup/DisclosureGroup的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我使用的是 SwiftUI 2.0,我需要一种方法将标题添加到 OutlineGroup
或 DisclosureGroup
,类似于 List
部分.有没有办法做到这一点?
I'm using SwiftUI 2.0, and I need a way to add a header to an OutlineGroup
or DisclosureGroup
, similar to headers in List
sections. Is there a way to do this?
推荐答案
您可以使用单独的 Section
来创建页眉(以及可选的页脚).
You can use separate Section
s to create the headers (and, optionally, footers).
import SwiftUI
struct Node : Identifiable {
let id = UUID()
let name: String
let children: [Node]?
}
struct SectionedOutlineView: View {
var body: some View {
List(selection: $selection) {
Section(header: Label("Nodes 1", systemImage: "sparkle")) {
OutlineGroup(nodes1, children: \.children) { node in
Label(node.name, systemImage: "shield")
}
}
Section(header: Label("Nodes 2", systemImage: "rosette")) {
OutlineGroup(nodes2, children: \.children) { node in
Label(node.name, systemImage: "folder")
}
}
}
.listStyle(SidebarListStyle())
}
@State var nodes1 = [
Node(name: "Layer 1", children: [
Node(name: "Layer 1-1", children: [
Node(name: "Layer 1-1-1", children: nil),
Node(name: "Layer 1-1-2", children: nil),
]),
Node(name: "Layer 1-2", children: [
Node(name: "Layer 1-2-1", children: nil),
Node(name: "Layer 1-2-2", children: nil),
Node(name: "Layer 1-2-3", children: nil),
]),
Node(name: "Layer 1-3", children: nil),
]),
Node(name: "Layer 2", children: [
Node(name: "Layer 2-1", children: [
]),
Node(name: "Layer 2-2", children: [
]),
Node(name: "Layer 2-3", children: [
]),
])
]
@State var nodes2 = [
Node(name: "Layer 1", children: [
Node(name: "Layer 1-1", children: [
Node(name: "Layer 1-1-1", children: nil),
Node(name: "Layer 1-1-2", children: nil),
]),
Node(name: "Layer 1-2", children: [
Node(name: "Layer 1-2-1", children: nil),
Node(name: "Layer 1-2-2", children: nil),
Node(name: "Layer 1-2-3", children: nil),
]),
Node(name: "Layer 1-3", children: [
]),
]),
Node(name: "Layer 2", children: [
Node(name: "Layer 2-1", children: [
]),
Node(name: "Layer 2-2", children: [
Node(name: "Layer 2-2-1", children: nil),
Node(name: "Layer 2-2-2", children: nil),
Node(name: "Layer 2-2-3", children: nil),
]),
Node(name: "Layer 2-3", children: [
]),
])
]
@State var selection = Set<Node.ID>()
}
这篇关于将标题添加到 OutlineGroup/DisclosureGroup的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文