這是我的代碼,我想知道如何允許在 ForEach 陳述句中使用所有 4 個陣列,因為現在我只能使用 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(.gray.opacity(0.3), lineWidth: 1)
}
Spacer()
}
}
.frame(height: 200)
}
.frame(height: 200)
.offset(y: -25)
}
.offset(y: -10)
.padding([.leading, .trailing, .bottom])
}
}
提前致謝。@jnpdx 我希望這會有所幫助,并且我確保它是可重現的。我不希望陣列組合,而是設定為文本,就像前兩個陣列都在視圖中的同一個堆疊中一樣。
uj5u.com熱心網友回復:
通過您的資料當前的結構方式,您可以zip將陣列一起放入一個多層元組,然后提取值。這有點難看。
struct ContentView: View {
var array1 = ["1", "2", "3"]
var array2 = ["a", "b", "c"]
var array3 = ["!", "@", "#"]
var array4 = [" ", "-", "~"]
var arraysForLoop : [(String,String,String,String)] {
let result = zip(array1,zip(array2,zip(array3,array4)))
return result.map { ($0.0, $0.1.0, $0.1.1.0, $0.1.1.1) }
}
var body: some View {
VStack {
HStack {
Text("Upcoming Flights")
.font(.title2)
.fontWeight(.bold)
Spacer()
}
ScrollView(.horizontal) {
HStack {
ForEach(arraysForLoop, 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)
Text(item.2)
Text(item.3)
}
}
.frame(width: 110, height: 140)
.overlay {
RoundedRectangle(cornerRadius: 10)
.stroke(.gray.opacity(0.3), lineWidth: 1)
}
Spacer()
}
}
.frame(height: 200)
}
.frame(height: 200)
.offset(y: -25)
}
.offset(y: -10)
.padding([.leading, .trailing, .bottom])
}
}
我的懷疑是,從長遠來看,您將決定您當前存盤資料的方法(例如,多個非 ID 資料陣列)不會是理想的結構。例如,如果一個陣列發生變化而其他陣列沒有變化怎么辦?如果索引發生變化,您的所有資料都將被抵消。
我建議將您的資料存盤在一個陣列中,其中每個專案都有您需要的每個欄位(教練、飛機等)——這將使您的事情變得更容易。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/405973.html
標籤:
