I can't undertand how to use @Binding
in combination with ForEach
in SwiftUI. Let's say I want to create a list of Toggle
s from an array of booleans.
struct ContentView: View {
@State private var boolArr = [false, false, true, true, false]
var body: some View {
List {
ForEach(boolArr, id: .self) { boolVal in
Toggle(isOn: $boolVal) {
Text("Is (boolVal ? "On":"Off")")
}
}
}
}
}
I don't know how to pass a binding to the bools inside the array to each Toggle
. The code here above gives this error:
Use of unresolved identifier '$boolVal'
And ok, this is fine to me (of course). I tried:
struct ContentView: View {
@State private var boolArr = [false, false, true, true, false]
var body: some View {
List {
ForEach($boolArr, id: .self) { boolVal in
Toggle(isOn: boolVal) {
Text("Is (boolVal ? "On":"Off")")
}
}
}
}
}
This time the error is:
Referencing initializer 'init(_:id:content:)' on 'ForEach' requires
that 'Binding' conform to 'Hashable'
Is there a way to solve this issue?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…