SwiftUI List 如何识别 macOS 上选择的项目

Isa*_*aac 4 macos swiftui swiftui-list

这是我根据这个答案得到的内容。该代码当前允许用户选择一个单元格,但我无法区分选择了哪个单元格或执行任何代码来响应该选择。总之,如何根据所选单元格的名称执行代码并在单击时执行。当前单击的单元格以蓝色突出显示,但我想识别它并根据该选择采取相应的操作。注意:我不想在编辑模式下选择单元格。另外,如何以编程方式选择单元格而无需单击?

struct OtherView: View {
    @State var list: [String]
    @State var selectKeeper = Set<String>()

    var body: some View {
        NavigationView {
            List(list, id: \.self, selection: $selectKeeper) { item in
                Text(item)
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)



这是演示选择的 gif

Isa*_*aac 5

我找到了一种解决方法,但必须单击文本本身 - 单击单元格不会执行任何操作:

struct OtherView: View {
    @State var list: [String]
    @State var selectKeeper = Set<String>()

    var body: some View {
        NavigationView {
            List(list, id: \.self, selection: $selectKeeper) { item in
                Text(item)
                  .onTapGesture {
                     print(item)
                  }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)