在 WWDC21 Apple 推出了 Table 容器,它允許使用 SwiftUI 在 macOS 上創建多串列:

我們可以提供對排序描述符陣列的系結,以使表的列可排序。在這里,我使用我的@FetchRequest's sortDescriptors:
struct ContentView: View {
@Environment(\.managedObjectContext) private var viewContext
@FetchRequest(sortDescriptors: [SortDescriptor(\.addDate, order: .reverse)], animation: .default)
private var videos: FetchedResults<Video>
@State
private var selection = Set<Video.ID>()
var body: some View {
NavigationView {
Table(videos, selection: $selection, sortOrder: $videos.sortDescriptors) { // <-- HERE
TableColumn("Title") {
Text($0.title)
}
TableColumn("Added") {
Text($0.addDate)
}.width(120)
TableColumn("Published") {
Text($0.publishedAt)
}.width(120)
TableColumn("Duration") {
Text($0.duration)
}.width(50)
}
}
}
}
雖然這編譯并運行沒有錯誤,但排序不起作用。我可以單擊表格的任何列,但沒有任何反應。
我是否遺漏了什么,或者這是TablemacOS 上的一個已知錯誤?
uj5u.com熱心網友回復:
您的TableColumn初始化程式需要有一個value引數,該引數需要一個確定如何排序的 keyPath。檔案中給出的示例:
TableColumn("Given Name", value: \.givenName) { person in
Text(person.givenName)
}
并且視圖中的文本使用相同的鍵路徑,您可以洗掉內容閉包:
TableColumn("Given Name", value: \.givenName)
所以在你的情況下,你應該能夠做類似的事情
TableColumn("Title", value: \.title)
…等等。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/407740.html
標籤:
