【问题标题】:How to add more then 10 columns with SwiftUI Table. Xcode 13.0 Beta 5 + Mac OS 12.1 Beta如何使用 SwiftUI Table 添加超过 10 列。 Xcode 13.0 测试版 5 + Mac OS 12.1 测试版
【发布时间】:2021-12-15 12:13:06
【问题描述】:

只是想尝试在 SwiftUI 中使用新功能 Table,但只能添加 10 列,不知道如何使用此 Table 功能添加更多列。任何 cmets 将不胜感激。

:-> Xcode 13.0 Beta 5 + Mac OS 12.1 Beta

导入 SwiftUI

struct Person: Identifiable {
    let givenName: String
    let familyName: String
    let id = UUID()
}

private var people = [
    Person(givenName: "Juan", familyName: "Chavez"),
    Person(givenName: "Mei", familyName: "Chen"),
    Person(givenName: "Tom", familyName: "Clark"),
    Person(givenName: "Gita", familyName: "Kumar"),
]

struct ContentView: View {
    var body: some View {
        Table(people) {
            TableColumn("Column1", value: \.givenName)
            TableColumn("Column2", value: \.familyName)
            TableColumn("Column3", value: \.givenName)
            TableColumn("Column4", value: \.familyName)
            TableColumn("Column5", value: \.givenName)
            TableColumn("Column6", value: \.familyName)
            TableColumn("Column7", value: \.givenName)
            TableColumn("Column8", value: \.familyName)
            TableColumn("Column9", value: \.givenName)
            TableColumn("Column10", value: \.familyName)
            TableColumn("Column11", value: \.givenName)
            TableColumn("Column12", value: \.familyName)
            
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

【问题讨论】:

  • 你不能将 {} 十列分组并使用多个组吗?
  • 感谢评论,我试过了,还是不行,编译不成功...
  • 您似乎在重复一种模式。将它们放在 ForEach 循环中
  • 试过了,不行,谢谢。

标签: xcode macos swiftui


【解决方案1】:

我能够让分组工作,但是 swiftUI 有一个限制。一个视图内只能声明 10 个子视图。

import SwiftUI

struct ContentView: View {
    private var people = [
        Person(givenName: "Juan", familyName: "Chavez"),
        Person(givenName: "Mei", familyName: "Chen"),
        Person(givenName: "Tom", familyName: "Clark"),
        Person(givenName: "Gita", familyName: "Kumar"),
    ]
    
    var body: some View {
        HStack{
            Group {
                Table(people) {
                    TableColumn("Column1", value: \.givenName)
                    TableColumn("Column2", value: \.familyName)
                    TableColumn("Column3", value: \.givenName)
                    TableColumn("Column4", value: \.familyName)
                    TableColumn("Column5", value: \.givenName)
                    TableColumn("Column6", value: \.familyName)
                    TableColumn("Column7", value: \.givenName)
                    TableColumn("Column8", value: \.familyName)
                    TableColumn("Column9", value: \.givenName)
                    TableColumn("Column10", value: \.familyName)
                }
            }
            Group {
                Table(people) {
                    TableColumn("Column1", value: \.givenName)
                    TableColumn("Column2", value: \.familyName)
                    TableColumn("Column3", value: \.givenName)
                    TableColumn("Column4", value: \.familyName)
                    TableColumn("Column5", value: \.givenName)
                    TableColumn("Column6", value: \.familyName)
                    TableColumn("Column7", value: \.givenName)
                    TableColumn("Column8", value: \.familyName)
                    TableColumn("Column9", value: \.givenName)
                    TableColumn("Column10", value: \.familyName)
                }
            }
        }
    }
}


struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

struct Person: Identifiable {
    let givenName: String
    let familyName: String
    let id = UUID()
}

这会编译,但是一旦你在预览中看到它是如何编译的,你会多么喜欢它,但它确实编译了。

【讨论】:

  • 非常感谢您的时间,谢谢,它编译但仍然无法弄清楚如何在一个表中创建超过 10 列。感谢您的帮助。
  • 没问题,不幸的是它对 swift 的限制。
猜你喜欢
  • 2015-11-18
  • 1970-01-01
  • 2019-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-15
  • 2015-11-20
相关资源
最近更新 更多