首页 > 解决方案 > 列表选择为 Set- 如何使用?

问题描述

我在玩 SwiftUI,显然没有得到它。

基本示例,仅显示所选名称。

struct ContentView: View {
    let names = ["Joe", "Jim", "Paul"]

    @State var selectedName = Set<String>()

    var body: some View {
        VStack {
            List(names, id: \.self, selection: $selectedName) { name in
                Text(name)
            }
            if !selectedName.isEmpty {
                Text(selectedName.first!) // <-- this line
            }
        }
    }
}

我想要的是一个可以更改名称的文本字段。尝试了很多方法,但每次都会出现另一个错误。

TextField("Name", text: $selectedName)

给出此错误:无法将 'Binding<Set<String>>' 类型的值转换为预期的参数类型 'Binding<String>'

TextField("Name", text: $selectedName.first!)

无法强制解开非可选类型 'Binding<((String) throws -> Bool) throws -> String?>' 的值

我该怎么做?

标签: swiftswiftuiswiftui-list

解决方案


您可以自行绑定:

 TextField("Name", text: Binding<String>(get: {self.selectedName.first!}, set: { _ in}) )

推荐阅读