我在我的Swift OS X应用程序上使用基于故事板的基于视图的NSTableView,该故事板具有12列。

我将headerview子类化,并尝试了其他方法来更改背景色,但是所有这些都同样隐藏了我的标题。

这是尝试执行的许多示例之一:

override func drawRect(dirtyRect: NSRect) {
    super.drawRect(dirtyRect)

    // Drawing code here.
    var myLayer = CALayer()
    myLayer.frame = self.frame
    myLayer.backgroundColor = NSColor.greenColor().CGColor
    self.layer?.addSublayer(myLayer)


这个例子用绿色填充整个headerview,所以我试图告诉我想要标题是这样的:

self.tableView?.tableColumnWithIdentifier("date")?.title = "Date"


...但是什么也没发生。谁能帮忙吗?

最佳答案

在我的一个应用程序中,我想(几乎)做同样的事情,还要做更多的事情(改变headerView的高度)。因此,我将自己的子类从原始单元格复制标题,字体,stringValue等作为子类(而不是NSTableHeaderView)。 (我无法在IB中做到这一点。)

我首先以编程方式用我的类的对象替换了headerView的所有单元格。在这里(在方法NSTableHeaderCell中)设置了backGroundColor。那很好。

我的提示:不要在(的子类
- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView),但在NSTableHeaderView的子类中。

07-26 00:33