objective-c - 自定义 NSTableCellView 标签在选择时不会更改文本颜色

标签 objective-c macos cocoa nstableview nstableviewcell

我有一个带有 3 个文本字段的自定义 NSTableCellView,其中 1 个是我自己创建的,另外 2 个是我自己创建的。问题来了:
enter image description here

即使我单击该行,文本字段的文本颜色也保持不变。我试图实现通过谷歌搜索发现的代码,但它不起作用。我的自定义 NSTableCellView 代码是:

- (void)drawRect:(NSRect)dirtyRect{
    NSColor *color = [NSColor colorWithCalibratedRed:(26/255.0) green:(26/255.0) blue:(26/255.0) alpha:1.0];
    [self.textField setTextColor:color];

    color = [NSColor colorWithCalibratedRed:(102/255.0) green:(102/255.0) blue:(102/255.0) alpha:1.0];
    [_lbl1 setTextColor:color];
    [_lbl2 setTextColor:color];
}

- (void)setBackgroundStyle:(NSBackgroundStyle)backgroundStyle {
    NSColor *color = (backgroundStyle == NSBackgroundStyleDark) ? [NSColor windowBackgroundColor] : [NSColor controlShadowColor];
    self.textField.textColor = color;
    self.lbl1.textColor = color;
    self.lbl2.textColor = color;
    [super setBackgroundStyle:backgroundStyle];
}

当用户点击标签时,我该怎么做才能使标签的文本颜色变为白色?

最佳答案

实际上,覆盖 NSTableViewCell 上的 setBackgroundStyle 对我来说效果很好,至少在 OS X 10.8 上是这样。它在选择事件和窗口激活/停用时更新。

这是我的自定义单元格实现——尽可能简单:

@implementation RuntimeInstanceCellView

- (void)setBackgroundStyle:(NSBackgroundStyle)backgroundStyle {
    [super setBackgroundStyle:backgroundStyle];
    self.detailTextField.textColor = (backgroundStyle == NSBackgroundStyleLight ? [NSColor darkGrayColor] : [NSColor colorWithCalibratedWhite:0.85 alpha:1.0]);
//    self.detailTextField.textColor = (backgroundStyle == NSBackgroundStyleLight ? [NSColor blackColor] : [NSColor whiteColor]);
}

@end

关于objective-c - 自定义 NSTableCellView 标签在选择时不会更改文本颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12989700/

相关文章:

ios - 集成 PayU Money Gateway iOS Swift

ios - #define 用于不同的屏幕尺寸——iPhone 4 和 iPhone 5

macos - MacOS Exposé 背后的逻辑

objective-c - 如何复制包含 Storyboard的 iOS 5.1 应用程序

iphone - IOS中如何停止调用循环功能

macos - OS X - 拦截手势

ruby - 我很困惑,在 OS X 上安装 Ruby 1.9.2 最简单的方法是什么?

iphone - ios View 坐标系

cocoa - Mac App Store 代码签名由 ​​Lion 检查还是我们必须这样做?

objective-c - 创建 NSWindow 的问题