【问题标题】:Table selection issue表选择问题
【发布时间】:2021-09-10 09:26:35
【问题描述】:

我在 Xcode 13 中引入的新 Table 遇到了这个奇怪的问题,我无法以编程方式选择第一行。 (但其他行工作正常)

复制:

  1. 确保已安装 macOS Montery 和 Xcode 13 Beta 2
  2. 将以下代码粘贴到一个新的空白 SwiftUI 项目中,并将其部署目标设置为 12.0 (macOS Montery):
struct ContentView: View {
    @State var data: [TestStruct] = []
    @State var selection = Set<UUID>()
    
    var body: some View {
        Table(data, selection: $selection) {
            TableColumn("column", value: \.text)
        }
        .toolbar {
            Button(action: {
                data.append(TestStruct(text: "Test"))
                selection = Set([data.last!.id])
            }) {
                Text("Add")
            }
        }
    }
}
struct TestStruct: Identifiable {
    var text: String
    var id = UUID()
}
  1. 运行应用程序,然后按“添加”按钮
  2. 观察到没有进行选择,但是当您再次按下它时,应该会出现一个选择

您将如何解决此问题?还是这是 Apple 的错误?

【问题讨论】:

    标签: swift xcode macos swiftui


    【解决方案1】:

    试试这样的:

    struct ContentView: View {
        @State var data: [TestStruct] = []
        //   @State var selection = Set<UUID>()  // <--- for multiple selections
        @State var selection: UUID? = nil  // <--- if you want just 1 selection
        
        var body: some View {
            Table(data, selection: $selection) {
                TableColumn("column", value: \.text)
            }
            .toolbar {
                Button(action: {
                    data.append(TestStruct(text: "Test"))
                    if let last = data.last {
                        DispatchQueue.main.async {
                            // selection.insert(last.id)
                            selection = last.id
                        }
                    }
                }) {
                    Text("Add")
                }
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-31
      • 2017-06-03
      • 1970-01-01
      • 2010-12-09
      • 1970-01-01
      相关资源
      最近更新 更多