在故事板中,当我将[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
的文本颜色设置为NSTextField
到NSTableCellView
时,颜色变为黑色,当选择/突出显示单元格时,它将变为白色。取消选择时,颜色将返回黑色。你可以免费获得所有这些行为。
我在默认情况下创建了另一个文本字段,它类似于iOS(参见下图中的标签Game)。我将文本颜色更改为灰色,一切正常。但是,当我现在选择/突出显示单元格时,颜色保持灰色并且不会交换为白色。如何通过Storyboard获得此类行为?如果不可能,通过代码?
答案 0 :(得分:4)
没有自动获得你想要的方法。您使用黑色标签看到的自动行为由NSTextFieldCell
(或其中一个超类,如NSCell
)实现。它由单元格backgroundStyle
到NSBackgroundStyleDark
的设置触发。当设置了自己的backgroundStyle
时,单元格NSTableCellView
由backgroundStyle
设置。 NSTableCellView
backgroundStyle
NSTableRowView
在其interiorBackgroundStyle
更改时设置selected
emphasized
,其textColor
和{{1}等其他属性发生},已设置。
无论如何,如果单元格[NSColor controlTextColor]
为NSTableCellView
或具有等效的RGB值,则单元格仅自动更改用于绘制的颜色。因此,它对您的灰色标签不起作用。
您可以实现NSTextField
或NSTableCellView
的自定义子类。您的类将实现(覆盖-setBackgroundStyle:
)textColor
的子类。在您的方法中,您可以检查正在设置的样式并更改文本字段NSTextField
。如果它是覆盖,请通过超级电话。 (虽然backgroundStyle
目前没有实现if ([NSTextField instancesRespondToSelector:@selector(setBackgroundStyle:)]) [super setBackgroundStyle:backgroundStyle];
属性,但它可能会在未来使用.Apple已经表示他们将添加封面方法来控制当前只存在于单元类中的方法。所以,你应该D{rand(),D[0]}
以便将来安全。)