【发布时间】:2016-10-22 02:30:04
【问题描述】:
如何始终对 NSTableView 中的列进行排序? 当我的视图被加载时,数据没有被排序,当数据被更新时也是如此。现在只有当我点击标题列时,数据才会排序。
这是我点击标题列时对数据进行排序的代码:
在 ViewDidLoad 中:
let descriptorName = NSSortDescriptor(key: "designation", ascending: true, selector: #selector(NSString.caseInsensitiveCompare(_:)))
tableview.tableColumns[0].sortDescriptorPrototype = descriptorName
委托函数:
func tableView(_ tableView: NSTableView, sortDescriptorsDidChange oldDescriptors: [NSSortDescriptor]) {
let dataArrayMutable = NSMutableArray(array: self.data)
dataArrayMutable.sort(using: tableView.sortDescriptors)
self.data = (dataArrayMutable as NSArray) as! [Article]
tableview.reloadData()
}
问题已解决:我必须在加载 tableView 之前对 data Array 中的数据进行排序。这是代码:
data = data.sorted(by: { $0.designation! < $1.designation! })
【问题讨论】:
标签: swift macos cocoa nstableview