我有一个带有 3 个文本字段的自定义 NSTableCellView
,其中 1 个是我自己创建的,另外 2 个是我自己创建的。问题来了:
即使我单击该行,文本字段的文本颜色也保持不变。我试图实现通过谷歌搜索发现的代码,但它不起作用。我的自定义 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/