如何在不隐藏列标题的情况下更改NSTableHeaderView背景颜色?

时间:2015-02-15 14:40:10

标签: xcode macos swift nstableview

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

我将我的标题视图子类化并试图改变背景颜色,但所有这些都隐藏了我的标题。

这是尝试做的许多例子之一:

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)

用绿色填充整个标题视图的那个例子,所以我试着告诉我,我希望标题符合我的列:

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

......但没有任何反应。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

在我的一个应用程序中,我想要(差不多)再多做一些(更改headerView的高度)。因此,我将(不是NSTableHeaderView,但是) NSTableHeaderCell子类化为我自己的子类,从原始单元格复制title,font,stringValue等。 (我无法在IB中这样做。)

我首先用编程方式将headerView的所有单元格替换为我的类的对象。在这里(在方法- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView中)我设置了backGroundColor。这很有效。

我的提示:不要将backGroundColor设置为(。的子类) NSTableHeaderView)但在NSTableHeaderCell的子类中。