使用SwiftUI的MacOS中的多列TableView

时间:2019-10-30 00:09:29

标签: macos swiftui

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

有人可以阐明这一点吗?我想它还没有准备好,但是还…。

3 个答案:

答案 0 :(得分:2)

macOS 12+(蒙特雷)更新

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

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)
    }
  }
}

答案 1 :(得分:0)

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

List {
    HStack {
        VStack {
            //Column 1 Data
        }
    }
    Divider()
    VStack {
        //Column 2 Data
    }
}

然后重复此操作,以用于需要多列数据的情况。

答案 2 :(得分:0)

现在可以从 macOS 12 到 Table