[英]SwiftUI - Increment variable in a ForEach loop doesn't work for some reason
請幫忙。 我的ContentView
有這個:
func makeView() -> Text{
self.index += 1 // add one to this variable
return Text("App")//Return a view
}
ForEach(0..<imageArray.count){ row in
HStack{
ForEach(0..<PartyCollectionViewCell.column){ column in
self.makeView() // Call the function in the content view
PartyCollectionViewCell(cellImg: imageArray[index+1]!)
} //update the cell
}
}
我想更新我在PartyCollectionViewCell(celling:imageArray[index+1]!)
“index”變量以將一個添加到index
變量。
我什至創建了如下所示的名為 makeview 的 func 來更新它,但它不起作用。
不是增加index
,而是根據row
和column
索引計算索引。
如果您的數組包含 8 個圖像並且您想要 2 列,那么您將有8/2 == 4
行。 您的外循環應該遍歷可以計算為imageArray.count/PartyCollectionViewCell.column
的行數。
那么圖像的索引將是row * PartyCollectionViewCell.column + column
。
func makeView() -> Text{
return Text("App") //Return a view
}
ForEach(0..<(imageArray.count/PartyCollectionViewCell.column)) { row in
HStack{
ForEach(0..<PartyCollectionViewCell.column) { column in
self.makeView() // Call the function in the content view
PartyCollectionViewCell(cellImg: imageArray[row * PartyCollectionViewCell.column + column]!)
} //update the cell
}
}
// Handle partial row
if (imageArray.count % PartyCollectionViewCell.column > 0) {
HStack {
ForEach((imageArray.count/PartyCollectionViewCell.column)*PartyCollectionViewCell.column..<imageArray.count) { index in
self.makeView()
PartyCollectionViewCell(cellImg: imageArray[index]!)
}
ForEach(0..<(PartyCollectionViewCell.column - imageArray.count % PartyCollectionViewCell.column)) { _ in
EmptyView()
}
}
}
如果您正在處理圖像集合,我建議您使用:
struct ContentView: View {
let data = (1...1000).map { "Item \($0)" }
let columns = [
GridItem(.adaptive(minimum: 80))
]
var body: some View {
ScrollView {
LazyVGrid(columns: columns, spacing: 20) {
ForEach(data, id: \.self) { item in
Text(item)
}
}
.padding(.horizontal)
}
}
}
正如這里所寫。 如果您使用目標 iOS13,您還可以在鏈接中找到解決方案
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.