我不明白如何在SwiftUI中将@Binding
与ForEach
结合使用。假设我想从布尔数组创建一个Toggle
列表。
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")")
}
}
}
}
}
我不知道如何将绑定传递给数组内每个布尔值,以使其能够传递给每个 Toggle
。 上面的代码会导致以下错误:
未解决的标识符“ $boolVal ”的使用
好的,这对我来说没问题(当然)。我尝试过:
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")")
}
}
}
}
}
这次的错误是:
对 'ForEach' 上的初始化器 'init(_:id:content:)' 的引用要求 'Binding' 遵循 'Hashable'
有办法解决这个问题吗?
Cannot declare entity named '$direction'; the '$' prefix is reserved for implicitly-synthesized declarations
和Initializer 'init(_:rowContent:)' requires that 'Binding<[String]>' conform to 'RandomAccessCollection'
来自$directions。 - Snipe3000