Lösung
Dies sollte durch Subklassen NSTableRowView
und dann Rückkehr der Unterklasse in der NSTableView
Delegatmethode
-(NSTableRowView*)tableView:(NSTableView *)tableView rowViewForRow:(NSInteger)row
Subclassing NSTableRowView
bietet viel mehr Flexibilität getan werden wenn Sie Ihre Zeilenansicht ändern. Die Rückgabe Ihrer Unterklasse in der NSTableView
Delegiertenmethode über entfernt automatisch auch die Hintergrundauswahlfarbe, wenn Sie von einer Zeile zur nächsten klicken (was ein offenes Problem in der anderen Antwort ist).
Schritte
Zuerst Unterklasse NSTableRowView
und außer Kraft setzen drawSelectionInRect
seine Hintergrundfarbe zu ändern, wenn sie ausgewählt:
@implementation MyTableRowView
- (void)drawSelectionInRect:(NSRect)dirtyRect
{
[super drawSelectionInRect:dirtyRect];
[[NSColor yellowColor] setFill];
NSRectFill(dirtyRect);
}
Als nächstes zurückkehren Ihre subclassed Reihe Ansicht, die die rowViewForRow
NSTableView
Delegatmethode mit:
- (NSTableRowView*)tableView:(NSTableView *)tableView rowViewForRow:(NSInteger)row
{
static NSString* const kRowIdentifier = @"MyTableRow";
MyTableRowView* myRowView = [tableView makeViewWithIdentifier:kRowIdentifier owner:self];
if (!myRowView) {
myRowView = [[MyTableRowView alloc] initWithFrame:NSZeroRect];
myRowView.identifier = kRowIdentifier;
}
return rowView;
}
Mit diesem Ansatz können Sie auch andere Elemente wie die Trennfarbe leicht überschreiben.Um dies zu tun, überschreiben die drawSeparatorInRect
Methode in Ihrer NSTableRowView
Unterklasse wie folgt:
- (void)drawSeparatorInRect:(NSRect)dirtyRect
{
// Change the separator color if the row is selected
if (self.isSelected) [[NSColor orangeColor] setFill];
else [[NSColor grayColor] setFill];
// Fill the seperator
dirtyRect.origin.y = dirtyRect.size.height - 1.0;
dirtyRect.size.height = 1.0;
NSRectFill(dirtyRect);
}
Ressourcen
Zwingende NSTableRowView
Anzeigeeinstellungen https://developer.apple.com/reference/appkit/nstablerowview
NSTableView rowViewForRow
Delegatmethode https://developer.apple.com/reference/appkit/nstableviewdelegate/1532417-tableview
@meda Haben Sie eine Idee? – Johnny
Ihre Frage wurde bereits beantwortet .. gehen Sie hier http://stackoverflow.com/questions/11920156/custom-uitableviewcell-selection-style –
@Rana Talllal dies ist von Ios. – Johnny