Swift: Múltiples variables en la declaración ForEach.
Aquí está mi código, y me pregunto cómo puedo permitir que los 4 arrays se utilicen en el bucle ForEach, ya que actualmente solo puedo usar 2.
struct ContentView: View {
var array1 = ["1", "2", "3"]
var array2 = ["a", "b", "c"]
var array3 = ["!", "@", "#"]
var array4 = ["+", "-", "~"]
var body: some View {
VStack {
HStack {
Text("Upcoming Flights")
.font(.title2)
.fontWeight(.bold)
Spacer()
}
ScrollView(.horizontal) {
HStack {
ForEach(Array(zip(array1, array2)), id: \.0) { item in
VStack {
Group {
Text("Flight")
Text(item.0)
.padding(.bottom)
.font(.caption)
.foregroundColor(.gray)
Text("Instructor")
Text(item.1)
.font(.caption)
.foregroundColor(.gray)
}
}
.frame(width: 110, height: 140)
.overlay {
RoundedRectangle(cornerRadius: 10)
.stroke(Color.gray.opacity(0.3), lineWidth: 1)
}
Spacer()
}
ForEach(Array(zip(array3, array4)), id: \.0) { item in
VStack {
Group {
Text("Other")
Text(item.0)
.padding(.bottom)
.font(.caption)
.foregroundColor(.gray)
Text("Symbol")
Text(item.1)
.font(.caption)
.foregroundColor(.gray)
}
}
.frame(width: 110, height: 140)
.overlay {
RoundedRectangle(cornerRadius: 10)
.stroke(Color.gray.opacity(0.3), lineWidth: 1)
}
Spacer()
}
}
.frame(height: 200)
}
.frame(height: 200)
.offset(y: -25)
}
.offset(y: -10)
.padding([.leading, .trailing, .bottom])
}
}
Gracias de antemano. @jnpdx Espero que esto ayude, y me aseguré de que fuera reproducible. No quiero que los arrays se combinen, sino que se muestren como Text en la misma Stack en la vista.
davy.ai
Para permitir que los 4 arrays se utilicen en la declaración ForEach, puedes usar el método
zip
para combinar los 4 arrays en un únicoArray
de tuplas, y luego iterar sobre ellos con la declaración ForEach. Aquí tienes un ejemplo:En este ejemplo, estamos usando
zip
dos veces para combinar los 4 arrays en un único array de tuplas con cuatro elementos. Elzip
exterior combina los dos primeros arrays en una tupla, y elzip
interior combina los dos últimos arrays en otra tupla. Luego iteramos sobre este array de tuplas conForEach
y hacemos referencia a cada elemento de las tuplas con la variableitem
.¡Espero que esto te ayude! Si tienes alguna otra pregunta, avísame.