這是不容易的,因爲我認爲之前: NStableview有一些問題。如果妳使用類似:
[destinationsListForSaleTableView setSelectionHighlightStyle:NSTableViewSelectionHighlightStyleNone];
你要做
- (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
{
if ([[aTableView selectedRowIndexes] containsIndex:rowIndex]) {
[aCell setBackgroundColor: [NSColor colorWithDeviceRed:0.29 green:0.27 blue:0.42 alpha:1]];
} else [aCell setBackgroundColor: [NSColor colorWithDeviceRed:0.52 green:0.54 blue:0.70 alpha:1]];
[aCell setDrawsBackground:YES];
}
這是不夠的,如果U型線是不是定製的。 如果你改變高度和內部,它必須更復雜:
保留選擇風格表供您選擇。 在細胞亞類:
-(NSColor *)highlightColorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {
return nil;
//[NSColor colorWithDeviceRed:0.29 green:0.27 blue:0.42 alpha:1];
}
- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
{
if ([self isHighlighted]) {
[[NSColor colorWithDeviceRed:0.29 green:0.27 blue:0.42 alpha:1] set];
cellFrame.origin.x -= 1;
cellFrame.origin.y -= 1;
cellFrame.size.height += 2;
cellFrame.size.width += 3;
NSRectFill(cellFrame);
}
[super drawWithFrame:cellFrame inView:controlView];
}
你問我爲什麼改變填充的大小? 當你使用背景的時候,蘋果留下一個小盒子,它會有不同的顏色。
感謝你,setDrawsBackground:YES是我失蹤。 – nebs 2011-12-21 23:43:29