DEV Community

GoyesDev
GoyesDev

Posted on

[SUI] Lista jerárquica

En una lista jerárquica, una fila ("parent") puede expandirse o colapsarse para mostrar otras filas hijas ("children"). Para que funcione, es necesario organizar la estructura datos X de modo que haya una propiedad y que contenga otras estructuras del mismo tipo X o nil en caso de que ya no contenga hijos (e.g. var y: [X]?).

struct Item: Identifiable {
  let id = UUID()
  let name: String
  // ⚠️ Se usó este nombre para demostrar que la variable que almacena a los "children" puede tener cualquier nombre. Lo único que importa es que sea de tipo [X]?
  var misH_iJoS: [Item]?
}

struct ContentView: View {
  @State var items: [Item] = [
    .init(name: "Carros", misH_iJoS: [
      .init(name: "Toyota"),
      .init(name: "Nissan"),
      .init(name: "Mazda")
    ]),
    .init(name: "Libros"),
    .init(name: "Profesiones", misH_iJoS: [
      .init(name: "Cocinero"),
      .init(name: "Secretario"),
      .init(name: "Estudiante")
    ])
  ]

  var body: some View {
    NavigationStack {
      List(items, children: \.misH_iJoS) { item in
        Text(item.name)
      }
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

Top comments (0)