SwiftUI—ForEach循环中的增量变量不';因为某种原因我不能工作
请帮忙。我在我的SwiftUI—ForEach循环中的增量变量不';因为某种原因我不能工作,swift,swiftui,Swift,Swiftui,请帮忙。我在我的内容视图中有以下内容: 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){ col
内容视图中有以下内容:
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
}
}
func makeView()->文本{
self.index+=1//向该变量添加一个
返回文本(“应用程序”)//返回视图
}
对于每个(0..而不是增加索引
,从行
和列
索引计算索引
如果数组包含8个图像,并且需要2列,则将有8/2==4
行。外部循环应循环可计算为imageArray.count/PartyCollectionViewCell.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()
}
}
}
然后图像的索引将是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()
}
}
}
func makeView()->文本{
返回文本(“应用程序”)//返回视图
}
ForEach(0..如果您正在处理图像集合,我建议您使用:
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,您也可以找到一个解决方案。我不清楚此快照的逻辑。什么是索引?为什么需要移动它?您到底想在这里实现什么?@Asperi index只是一个全局变量,我想在ForEach循环语句中更改它的值。因此,我的最终目标是使用垂直滚动的scrollview。循环浏览一组图像,并将这些图像视图成对并排放置在scrollview上。因此,我有一个PartyCollectionViewCell类,它只将图像放置在imageviewRight上,因此您尝试发送imageArray[2]
到PartyCollectionViewCell(cellImg:)的第一个实例,imageArray[3]到下一个实例,
imageArray[4]`假设PartyCollectionViewCell.column==2
,那么计算row*PartyCollectionViewCell.column+column+2]
给出的数字会越来越多。是的,我刚刚这么做了,当我这样做时我得到了一个零,我把+2
放进去,因为它似乎与你的数学相匹配。你需要索引从开始吗0
。如果是这样,请删除+2
。这就是我的数组:var imageArray:[Int:String]=[0:“kanye”,1:“kelani”,2:“trippie”,3:“astro”,4:“riri”,5:“migos”,6:“cindy”,7:“cheesy”].所以我只需要代码来循环这个,然后选择0和1个图像放在第一行。2和3放在第二行。依此类推。我真的不懂你的数学。对不起