MacOS 中使用 SwiftUI 的多列 TableViews

Pet*_*ter 28 macos swiftui

我一直在尝试使用 SWiftUI,但似乎根本找不到任何关于如何使用 SWiftUI 创建多列 TableView 的信息,就像在 NSTableView 中一样。我设法找到的所有示例都显示了单列数据。Apple 的文档甚至指定 SwiftUI 列表结构用于数据行的单列显示。这是 MacOS 上应用程序的一个非常基本的数据结构,但似乎在任何地方都没有提到它!

有人可以对此有所了解吗?我想它只是还没有准备好,但仍然......

Pra*_*tti 13

macOS 12+ 更新(蒙特利)

在 macOS Monterey 中,NSTableView现在可以用Table. 此外,还Table可以支持TableColumn带有关键路径和尾随闭包的 s。

struct ContentView: View {
  @State private var characters = StoryCharacter.previewData

  var body: some View {
    Table(characters) {
      TableColumn("") { CharacterIcon($0) }
        .width(20)
      TableColumn("Villain") { Text($0.isVillain ? "Villain" : "Hero") }
        .width(40)
      TableColumn("Name", value: \.name)
      TableColumn("Powers", value: \.powers)
    }
  }
}
Run Code Online (Sandbox Code Playgroud)


Ben*_*n O 1

您可以创建一个 HStack,然后在两个 VStack 之间有一个分隔线,您可以在其中放置不同的数据列。它看起来像这样:

List {
    HStack {
        VStack {
            //Column 1 Data
        }
    }
    Divider()
    VStack {
        //Column 2 Data
    }
}
Run Code Online (Sandbox Code Playgroud)

然后无论需要多少列数据,都可以重复此操作。