SwiftUI ForEach 获取二维数组中的元素和索引

Posted

技术标签:

【中文标题】SwiftUI ForEach 获取二维数组中的元素和索引【英文标题】:SwiftUI ForEach get element AND index in 2d array 【发布时间】:2020-01-14 13:16:13 【问题描述】:

我需要访问索引以及 ForEach 循环中的元素。

到目前为止,我的数据存储中有:

@Published var sevenDayReview: [[CGFloat]] = [
        [1754,1654],[1854,1687],[1985,1854],[1765,1652],[1864,1698],[1987,1654],[1865,1465]
    ]

在我看来:

ForEach(self.dataModel.sevenDayReview, id: \.self)  array in
       ForEach(array, id: \.self)  element in
             VStack 
                    ReviewChart(dataModel: CalorieViewModel(), valueHeight: element, cornerRadius: 5, color: 2 )
              
       

这工作正常。但是我想将当前元素的当前数组索引传递给 color 参数。

背景:使用数据存储区中的值加载条形图并按行索引交替颜色。

我不知道在 SwiftUI 中最好的方法是什么。

【问题讨论】:

【参考方案1】:

您可以使用 ForEach 视图的different init:

ForEach(0..<array.endIndex)  index in //inner ForEach
    VStack 
        ReviewChart(dataModel: CalorieViewModel(), 
                    valueHeight: array[index], 
                    cornerRadius: 5, 
                    color: index)
    

【讨论】:

谢谢。我试过了,得到以下错误:“不能下标不正确或不明确类型的值”。编译器标记数组[index] 您需要注意,很多时候您遇到的错误与 XCode 在处理 SwiftUI 时向您显示的错误不同。 index 是 Int 所以这个错误应该是无效的。 你是对的,我不得不关闭 XCode 并重新启动,然后清理项目,错误就消失了。谢谢!

以上是关于SwiftUI ForEach 获取二维数组中的元素和索引的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI - 在 ForEach 中获取 TextField 数组

SwiftUI - 如果在 ForEach 循环内

为啥我不能访问这个数组 ForEach 循环中的数据? SwiftUI

在 SwiftUI 中的 forEach 期间将文本字段输入添加到数组

在 SwiftUI 中的 forEach 中获取索引和值

如何从二维数组中的多个key中获取指定key的值?