为 SwiftUI 创建一个基于文本的游戏
想知道为什么我不能在字符 ForEach 循环中访问 isSelected?
收到此错误:无法在此行将“Bool”类型的值转换为预期的参数类型“Binding”
Toggle(isOn: character.isSelected){
变量对象声明:
@Binding var characters: [Character]
代码在这里:
VStack {
ForEach(characters) { character in
HStack{
VStack(alignment:.leading) {
Text("\(character.name)")
.fontWeight(.bold)
Text("\(character.description)")
.lineLimit(10)
}
Spacer()
Toggle(isOn: character.isSelected){
Text("a")
}.labelsHidden()
Run Code Online (Sandbox Code Playgroud)
osk*_*rko 26
就我而言,我需要传递“true”,而不是变量......
解决方案很简单:
.constant(true)
Run Code Online (Sandbox Code Playgroud)
Nel*_*elu 18
我遇到了同样的错误,但就我而言,绑定本身是一个Bool.
通过添加修复.wrappedValue:
nameOfBinding.wrappedValue
Run Code Online (Sandbox Code Playgroud)
Acharacter本身没有绑定,它只是一个值,它需要characters通过下标传递绑定,所以这里有一个解决方案(.enumerated用于获取索引和值的访问)
ForEach(Array(characters.enumerated()), id: \.element) { i, character in
HStack{
VStack(alignment:.leading) {
Text("\(character.name)")
.fontWeight(.bold)
Text("\(character.description)")
.lineLimit(10)
}
Spacer()
Toggle(isOn: self.$characters[i].isSelected){ // << here !!
Text("a")
}.labelsHidden()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13436 次 |
| 最近记录: |