更改NSTableView备用行颜色

ind*_*gie 18 macos cocoa objective-c interface-builder nstableview

我正在使用Interface Builder中的"Alternating Rows"选项在NSTableView上获取交替的行颜色.有没有办法改变交替行的颜色?

Ken*_*agh 7

如果您想使用未记录的方式,请创建一个NSColor类别并覆盖_blueAlternatingRowColor如下:

@implementation NSColor (ColorChangingFun)

+(NSColor*)_blueAlternatingRowColor
{
    return [NSColor redColor];
}

@end
Run Code Online (Sandbox Code Playgroud)

或者要更改两种颜色,重写controlAlternatingRowBackgroundColors以返回您想要交替的颜色数组.

@implementation NSColor (ColorChangingFun)

+(NSArray*)controlAlternatingRowBackgroundColors
{
    return [NSArray arrayWithObjects:[NSColor redColor], [NSColor greenColor], nil];
}

@end
Run Code Online (Sandbox Code Playgroud)


ind*_*gie 7

在这里找到了更好的方法.该方法会覆盖NSTableView子类中的highlightSelectionInClipRect:方法,因此您可以使用所需的任何颜色来替换交替行.它不像使用NSColor类别那样hackish,它只影响你选择的表视图.