gpt4 book ai didi

SwiftUI - 在 ForEach 循环中递增变量

转载 作者:行者123 更新时间:2023-12-04 13:17:51 25 4
gpt4 key购买 nike

我的 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
}
}

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

最佳答案

创建一个函数,该函数在 ForEach 中返回您想要的 View 并增加变量。

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 ,所以我只是从你其余代码的上下文中猜测的。您应该能够很容易地调整类型,但如果没有,请确定您的问题或这篇文章的评论中的变量类型,我可以更新我的答案(但我很确定我的类型是正确的)。

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

关于SwiftUI - 在 ForEach 循环中递增变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58430112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com