SwiftUI中通过列表选择字典键值对时无法获取并显示对应值的问题求助
SwiftUI中通过列表选择字典键值对时无法获取并显示对应值的问题求助
各位好,我觉得这个问题应该挺容易解决的,但我找了半天都没找到可行的方案,想请大家帮忙看看。
我现在要做的是在SwiftUI里展示一个字典,让用户可以选择其中的条目,这样之后我能通过代码同时拿到选中条目的键和值。
目前我已经能在列表里正常显示每个条目的键和值了,代码大概是这样:
Text("Key:\t\t\(item)\t\t\t") Text("Value:\t\(myList[item] ?? "")")
但问题来了:当用户选中条目后,我只能获取到键,而且只能用print输出,没法用Text视图显示出来。比如这样打印是正常的:
print("Selection is:\($selection)")
但换成Text就不行,不管是这么写:
Text("Selection is:\(selection)")
还是这么写:
Text("Selection is:\($selection)")
都没法正常显示选中的内容。
我猜这个问题可能和我定义选中状态变量的方式有关,我现在是这么声明的:
@State private var selection = Set<String>()
我试过把它改成Set<String:String>(),结果直接报错了,完全不知道该怎么调整。
麻烦各位给我点建议,谢谢啦!
我的完整代码如下:
import SwiftUI struct ContentView: View { var myList = ["Chumbawumba": "7", "Jini Dosa": "2", "Handbrake": "13"] @State private var selection = Set<String>() var body: some View { List(selection: $selection) { ForEach(myList.keys.sorted(), id: \.self) { item in HStack { Text("Key:\t\t\(item)\t\t\t") Text("Value:\t\(myList[item] ?? "")") Spacer() } } } // Text("Selection is:") // Text(selection) // Text("Selection is:\(selection)") Button(action: { print("Selection is:\(selection)") }) { Text("Get") .padding() } .padding() } }
备注:内容来源于stack exchange,提问作者boristheslug
相关产品推荐
相关产品推荐

