【发布时间】:2019-07-09 09:19:52
【问题描述】:
我在 xib 文件中的 NSWindow 中有一个 NSTableView。 Interface Builder中的xib可以查看here。我正在使用基于视图的表格视图。
我的问题是tableView 中的单元格文本字段仅填充到表格的高度。从那时起,tableView:viewForTableColumn:row: 停止被调用,我只剩下正确的行数,但其中大多数没有文本。插图here。
我实现的dataSource和delegate方法如下:
// MARK: - Table View Data Source
func numberOfRows(in tableView: NSTableView) -> Int {
return builds.count
}
func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
guard let cellView = tableView.makeView(withIdentifier: tableColumn!.identifier, owner: nil) as? NSTableCellView else {
return nil
}
let formatter = DateFormatter()
formatter.dateFormat = "MMM d, yyyy"
cellView.textField?.stringValue = formatter.string(from: builds[row].buildDate)
return cellView
}
我已经坚持了大约一天,但没有取得太大进展。我会很感激任何帮助
【问题讨论】:
-
只有可见行需要视图,视图被回收。
-
请将您的代码添加到问题中。
-
已添加。 builds.count 是 92,但是 viewFor 方法在它停止之前只被调用了 12 或 13 次
-
你为什么使用
tableColumn!.identifier?您应该为单元格分配一个标识符并改用它。我不确定为什么它甚至显示前 12 个。从情节提要中,转到单元格并在按“ctrl+shift”的同时单击它。选择“表格单元视图”并从右侧窗格中的身份检查器更改标识符。然后,转到您的代码并将tableColumn!.identifier更改为单元格ID。 -
@3li
tableColumn!.identifier非常好。如果未指定列,则框架会为列分配隐式标识符。
标签: swift macos cocoa nstableview