Se puede envolver una vista con AnyView para pasarla como parámetro a alguna función.
struct ContentView: View {
var body: some View {
getView()
}
private func getView() -> AnyView {
let valid = false
let myView: AnyView
if valid {
myView = AnyView(Text("Hola mundo"))
} else {
myView = AnyView(Image(systemName: "circle"))
}
return myView
}
}
@ViewBuilder
En lugar de usar AnyView, quizás convenga más anotar el método con @ViewBuilder.
struct ContentView: View {
var body: some View {
getView()
}
@ViewBuilder
private func getView() -> some View {
let valid = false
if valid {
Text("Hola mundo")
} else {
Image(systemName: "circle")
}
}
}
EmptyView
A veces no es posible devolver una vista, así que se puede devolver un EmptyView, que no tiene tamaño, así que no afecta a la interfaz.
struct ContentView: View {
var body: some View {
VStack {
Text("Titulo")
getView()
}
}
@ViewBuilder
private func getView() -> some View {
let valid = false
if valid {
Text("Hola mundo")
} else {
EmptyView()
}
}
}


Top comments (0)