站点图标 Codeun

如何在 SwiftUI 中获取 Foreach 中的索引

如果需要在 ForEach 循环视图中获取当前元素的索引,这里演示三种我比较推荐的食用方法,直接贴代码,简单易懂。

使用 enumerated() 获取索引

.enumerated() 修饰符会使用元素和索引配对来遍历每个元素,以下是 .enumerated() 获取Foreach 索引的示例代码

struct ContentView: View {
    let items = ["Apple", "Swfit", "Codeun"]

    var body: some View {
        VStack {
            ForEach(Array(items.enumerated()), id: \.offset) { index, item in
                Text("ForEach 索引 Index = \(index), Value = \(item)")
            }
        }
    }
}

使用 Range 范围获取索引

可以使用 aRange 范围来迭代,aRange 范围本身就是一个符合Sequence协议的集合,可以直接将它作为 ForEach 的输入参数,然后在 ForEach 中获取索引,以下是示例代码:

struct ContentView: View {
    let items = ["Apple", "Swfit", "Codeun"]

    var body: some View {
        VStack {
            // 0..<items.count 就是 aRange 范围
            ForEach(0..<items.count, id: \.self) { index in
                Text("ForEach 索引 Index = \(index), Value = \(items[index])")
            }
        }
    }
}

使用 indices 集合来访问索引

可以使用数组的 indices 属性来在 ForEach 中访问索引。数组的 indices 属性返回一个包含数组所有索引的范围。这对于在 ForEach 循环中同时需要数组的索引和对应元素时非常有用。

struct ContentView: View {
    let items = ["Apple", "Swfit", "Codeun"]

    var body: some View {
        VStack {
            ForEach(items.indices, id: \.self) { index in
                Text("ForEach 索引 Index = \(index), Value = \(items[index])")
            }
        }
    }
}

退出移动版