Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SwiftUI—ForEach循环中的增量变量不';因为某种原因我不能工作_Swift_Swiftui - Fatal编程技术网

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放在第二行。依此类推。我真的不懂你的数学。对不起