Pódense engadir vistas adicionais a unha vista principal colocándoas no body
(liña 5
), aínda que como veremos neste punto, non o faremos así xa que ocasiona un problema:
struct Content View: View {
var body: some View {
Text (Hello, world!")
.padding()
Text("Adiós amigo, adiós la luz!")
}
}
Pero, agregar unha vista adicional como fixemos no exemplo, fai que Xcode cre unha segunda vista previa que conteña só o «Adiós amigo, adiós la luz!»
Stacks (contedores): Forma correcta de engadir vistas #
Para engadir correctamente vistas adicionais, esas vistas deben colocarse nunha vista de contedor.
Unha vista de contedor agrupa visualmente varias vistas (campos de texto, botóns,…)
Por tanto, o exemplo anterior podería modificarse para colocar as dúas vistas de texto nunha vista de pila ou contedor vertical (VStack) que, como suxire o nome, coloca as vistas verticalmente:
struct Content View: View {
var body: some View {
VStack{
Text (Hello, world!")
.padding()
Text("Adiós amigo, adiós la luz!")
}
}
}
Máis info no seguinte tema: Tipos de view → Stacks (contedores)
Concatenación de vistas #
Unha excepción notable ao requisito de que se integren varias vistas nun contedor é que varias vistas de texto conten como unha soa vista cando se concatenan.
Por tanto, a seguinte é unha declaración de vista válida:
struct Content View: View {
var body: some View {
Text("Adiós amigo")+Text(",")+Text("adiós la luz!")
}
}
return #
Nos exemplos anteriores a propiedade body non ten unha declaración de devolución (return
).
Isto débese a que o peche
contén unha soa expresión, polo que non fai falta unha declaración de devolución con return
(NOTA: os peches
están explicados no tema de Swift avanzado).
Con todo, tan pronto como se agreguen expresións adicionais ao peche, será necesario agregar unha declaración de devolución con return
, por exemplo:
struct Content View: View {
@State var arquivoAberto: bool = true
var body: some View {
if (arquivoAberto) { ... }
return VStack {
Text("Adiós amigo")+Text(",")+Text("adiós la luz!")
}
}
}