合并NSTableView

时间:2018-02-25 10:13:50

标签: cocoa interface-builder nstableview

有没有办法在NSTableView中合并单元格?

我知道在NSTableView中有两种显示数据的模式:基于单元格和基于视图。如果数据由单元格表示,则函数

tableView(_ tableView: NSTableView, viewFor tableColumn:  NSTableColumn?, row: Int) 

是负责任的,否则

tableView(_ tableView: NSTableView, rowViewForRow row: Int)

目前我正在使用第一个。在iOS中,您可以使用界面构建器中的单元格原型将视图与自定义UITableViewCell链接,但是如何在NSTableView中完成整个行?

1 个答案:

答案 0 :(得分:1)

也许我找到了解决方案:你可以同时使用

tableView(_:viewFor:row:)

tableView(:viewFor:tableColumn:row:)

但是你必须要知道tableView没有为一个单元格使用这两种方法(互斥)。

现在您可以定义一个xib,其中包含一个UIView。将UIView的类更改为NSTableRowView。接下来,将viewDidLoad中的类加载到表中:

if let nib: NSNib = NSNib(nibNamed: NSNib.Name("SpecialRow"), bundle: nil) {
    self.tableView?.register(nib, forIdentifier: NSUserInterfaceItemIdentifier("specialRow"));
}

在表格方法rowViewForRow中,您可以执行以下操作:

if let srow: SpecialRow = tableView.makeView(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "specialRow"), owner: nil) as? SpecialRow {
    // ...

    return srow;
}