SwiftUI-ForEach循环中的Increment变量

时间:2019-10-17 10:11:53

标签: swiftui

我的ContentView中有这个:

List {
    ForEach(items) { Item in
        ItemView(cellColor: self.$cellColor, title: item.title, orderId: "\(item.orderId)")
    }
}

我想更新一个变量,比方说在循环的每次迭代中将其加1,但是我无法让SwiftUI做到这一点。像这样:

var a: Int = 1
List {
    ForEach(toDoItems) { toDoItem in
        ToDoItemView(cellColor: self.$cellColor, title: toDoItem.title, orderId: "\(toDoItem.orderId)")
        a = a + 1
    }
}

但这不起作用。抱歉,如果我没有以正确的格式询问,这是我的第一个问题!

1 个答案:

答案 0 :(得分:0)

使函数返回所需的视图,并增加变量。

struct ContentView: View {
    @State var a: Int = 1
    @State var cellColor: CGFloat = 0.0 // or whatever this is in your code
    var body: some View {
        List {
            ForEach(toDoItems) { toDoItem in
                self.makeView(cellColor: self.$cellColor, title: toDoItem.title, orderId: "\(toDoItem.orderId)")
            }
        }
    }
    func makeView(cellColor: Binding<CGFloat>, title: String, orderId: String) -> ToDoItemView {
        self.a += 1
        return ToDoItemView(cellColor: cellColor, title: title, orderId: orderId)
    }
}

您没有指定cellColortitleorderId的类型,所以我只是从其余代码的上下文中猜测出来。您应该能够很容易地调整类型,但是如果不能,请确定问题或本文评论中变量的类型,然后我就可以更新答案(但是我很确定我的类型正确)。

编辑:根据OP的评论,显然cellColorCGFloat,而不是Color,所以我更新了代码以反映这一点。