SwiftUI中的ForEach视图

369 阅读1分钟

SwiftUI中的ForEach 视图对于遍历一个数组或一个范围非常有用,并生成我们可以使用的视图。

例如,这里我们创建了3个Text 视图,打印从0到2的数字。

ForEach(0..<3) {
    Text("\($0)")
}

$0指的是传递给闭包的第一个参数,在这个例子中,它是(按顺序)数字0、1和2。

在这个例子中,我把它们嵌入到一个VStack ,否则它们会重叠。

VStack {
    ForEach(0..<3) {
        Text("\($0)")
    }.padding()
}

注意我是如何使用padding() 修改器来增加一些间距的

使用ForEach 的一个常见方法是在List 视图内。

List {
    ForEach(0..<3) {
        Text("\($0)")
    }
}

这是一个很常见的做法,我们实际上可以省略ForEach ,直接从List 迭代。

List(0..<3) {
    Text("\($0)")
}

这两个例子使用了一个范围0..<3 。我们也可以对一个数组进行迭代。

let fruits = ["Apple", "Pear", "Orange"]

//...

List {
    ForEach(fruits, id: \.self) {
        Text("\($0)")
    }
}

注意在这种情况下,我们有另一个参数:id

这是为了唯一地识别数组中的项目。

\.self 来表示id ,这对内置类型是有效的,如果你要迭代一个自定义的结构,你就需要它符合Identifiable 协议或者提供一个唯一的参数。