Skip to content

Instantly share code, notes, and snippets.

@DarrenHurst
Created February 11, 2025 19:59
Show Gist options
  • Save DarrenHurst/7ea6b8763f7496edf1f83c66162e71b5 to your computer and use it in GitHub Desktop.
Save DarrenHurst/7ea6b8763f7496edf1f83c66162e71b5 to your computer and use it in GitHub Desktop.
Tree Node
import SwiftUI
struct Node: Identifiable {
let id = UUID()
var name: String
var children: [Node] = []
}
#Preview {
TreeView()
}
struct TreeView: View {
@State private var rootNode: Node = Node(name: "Menu",
children: [Node(name: "4"),Node(name: "5"),Node(name: "455"),Node(name: "455")])
var body: some View {
GeometryReader { geometry in
TreeViewCell(geometry: geometry, node: rootNode)
.foregroundColor(.blue)
}
}
}
struct TreeViewCell: View {
let geometry: GeometryProxy
let node: Node
var body: some View {
VStack(alignment: .center) {
Text(node.name)
.font(.headline)
.padding()
if !node.children.isEmpty {
VStack(alignment: .leading) {
ForEach(node.children, id: \.id) {
child in
TreeViewCell(geometry:
geometry, node: child)
.foregroundColor(.blue)
}
}
.frame(maxWidth: .infinity, alignment:
.leading)
.cardStyleOn()
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment