[英]SwiftUI - List of an array with a button that toggles a Bool variable
我正在尝试创建一个简单的代码:我有一个包含三个对象的“数组”,每个对象都包含一个 boolean 值。 我想创建一个列表,为每个 object 创建一个按钮,当我单击该按钮时,object 的值会切换。 我试过了,但我收到一条错误消息:“无法分配给属性:'n' 是一个 'let' 常量”。 你有什么建议或简单的代码给我吗?
import SwiftUI
struct Object {
var id = UUID()
var selected : Bool
}
struct ContentView: View {
var array = [Object( selected: false), Object(selected: false), Object(selected: false)]
var body: some View {
ForEach(array, id: (\.id)) { n in
VStack {
Button( action: { n.selected = true }) { Text("Change")}
}
}
}
}
您不能更改块中传递的变量,因为它是不可变的。 它只是您的列表元素的副本,而不是您的实际列表元素。
你想要的另一种实现是这样的:
import SwiftUI
struct Object {
var id = UUID()
var selected: Bool
}
struct ContentView: View {
@State var array = [Object(selected: false), Object(selected: false), Object(selected: false)]
var body: some View {
ForEach(array.indices) { index in
VStack {
Button(action: { self.array[index].selected = true }) {
Text("Change: \(self.array[index].selected.description)")
}
}
}
}
}
我添加了 @State 装饰器,它是您能够在数组中进行更改刷新视图所必需的,并且我还更改了获取值的方式,直接从数组中获取它,而不是从参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.