DEV Community

David Goyes
David Goyes

Posted on

SwiftUI #21: Groups

Un Stack crea una estructura de tipo TupleView que puede manejar hasta 10 subvistas y, por ende, es la cantidad máxima de vistas que puede contener un stack.

Un Group agrupa varias vistas juntas para 1) impedir que pase el problema mencionado arriba y 2) aplicar estilos a varias vistas a la misma vez.

struct ContentView: View {
  var body: some View {
    VStack {
      Group {
        Text("Hola mundo 1")
        Text("Hola mundo 2")
      }.foregroundStyle(.red)
      Group {
        Text("Hola mundo 3")
        Text("Hola mundo 4")
      }
      .foregroundStyle(.blue)
      .font(.title)
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

Si una función retorna una sola vista (i.e. some View) y NO está marcada con @ViewBuilder, si en el interior hay una lógica condicional que puede retornar vistas de tipos diferentes, habrá un error, a no ser de que se envuelva esta lógica dentro de un Group.

struct ContentView: View {
  let opcion1 = false

  func makeView(flag: Bool) -> some View {
    Group {
      if flag {
        Text("Hola")
      } else {
        // ❌ error si no se envuelve en Group
        Image(systemName: "star")
      }
    }
  }

  var body: some View {
    makeView(flag: opcion1)
  }
}
Enter fullscreen mode Exit fullscreen mode

Top comments (0)