我的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
}
}
但这不起作用。抱歉,如果我没有以正确的格式询问,这是我的第一个问题!
答案 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)
}
}
您没有指定cellColor
,title
和orderId
的类型,所以我只是从其余代码的上下文中猜测出来。您应该能够很容易地调整类型,但是如果不能,请确定问题或本文评论中变量的类型,然后我就可以更新答案(但是我很确定我的类型正确)。
编辑:根据OP的评论,显然cellColor
是CGFloat
,而不是Color
,所以我更新了代码以反映这一点。