什么是NSView版本的NSCell突出显示的属性?

时间:2016-08-04 20:41:19

标签: nstableview nsview nstableviewcell

我将基于单元格的NSTableView迁移为基于视图。使用NSCell,确定是否突出显示了一个单元格(例如,以白色而不是黑色绘制文本),我查看了NSCell highlighted属性。

NSView的版本是什么?我在文档中找不到这样的内容。

1 个答案:

答案 0 :(得分:0)

最简单的方法是简单地继承NSTableCellView。所有文档都说您可以子类化NSTableCellView或NSView,例如Table View Programming Guide for Mac

  

将NSTableCellView对象(或自定义视图)从对象库拖到表视图中的相应列。 ...通常,视图类是NSTableCellView的子类。

它没有说明这是什么,或者为什么你想要使用它。它看起来像一个NSView,它有一个NSTextField和一个NSImageView,它就是它 - 所以如果你不是在制作一个有这些的视图,那么它很容易忽略这个类而只是子类的NSView。

有趣的是,如果你在NSTableCellView中有任何NSTextFields(即使你没有使用textField属性!),它们会自动使用正确的浅色/深色。

特别是,似乎NSTableCellView的backgroundStyle属性是导致文本值实际更改的原因。文档说:

  

默认实现自动转发对所有实现setBackgroundStyle的子视图的调用:或者是NSControl,它们具有响应setBackgroundStyle的NSCell类:。

当然,NSTextField是带有NSCell的NSControl,所以它就可以调用它。

虽然它在Apple的文档中没有完全清楚("这"指的是什么?),但似乎NSTableView调用了{{1在任何定义它的视图上。因此,如果您不想继承NSTableCellView,您也可以只将属性添加到您自己的NSView中:

-setBackgroundStyle:

并让你的绘图代码使用它。