2010-11-18 11 views
6

Ich frage mich, wie ich die blauen Umrisse loswerden kann, die Cocoa um Zeilen in NSTableView/NSOutlineView erstellt, wenn ich mit der rechten Maustaste darauf klicke.NSTableView: blaue Umrisslinie mit rechts angeklickten Zeilen

NSTableView Outline http://tobidobi.com/nstableview_outline.png

Es scheint nicht ein klassisches „Highlight“ noch ein „Fokusring“ zu sein, wenn ich mich nicht irre - so, wie es ist, tatsächlich?

Ich zeichne derzeit benutzerdefinierten NSCells vollständig ich - aber ich kann nicht herausfinden, wie man entweder
* Diese Umrisse zeichnet von mir, auch, oder
* es loszuwerden, oder
* mindestens Ändern Sie die Farbe

Alle Hinweise sind sehr willkommen! Vielen Dank!

Antwort

12

Leider ist mir keine dokumentierte Möglichkeit bekannt, dies zu tun, kurz bevor Sie Ihren eigenen Tabellenansichtsersatz schreiben.

Verfahren außer Kraft zu setzen ist:

- (void)drawContextMenuHighlightForRow:(NSInteger)row; 

Bitte eine Erweiterung Anfrage mit Apple-Datei, damit Sie nicht auf undokumentierten Methoden verlassen, um zu tun, was Sie in Zukunft wollen. Es sieht so aus, als ob die anderen beiden Tabellenansicht-Hervorhebungsmethoden in 10.6 anpassbar gemacht wurden, aber dies war nicht der Fall. Ich habe immer gedacht, dass es ein bisschen klobig aussieht, aber es muss angegeben werden, auf welche Reihe das Menü verweist (nicht notwendigerweise die gleiche wie die markierte Zeile).

+0

, die den Trick tat! Danke, Nicholas! – Tobidobi

+0

Der Typparameter ist falsch !! Es wird nicht richtig in 64-Bit funktionieren. –

+0

Danke, ich habe eine Weile nicht 64-Bit-Kakao gemacht. –

1

Mein NSTableView * mainTableView ist nicht Unter eingestuft, so habe ich es einfach los, bevor das Kontextmenü öffnet sich:

- (void)menuWillOpen:(NSMenu *)menu{ 
    NSInteger rightClicked = [mainTableView clickedRow]; 
    [mainTableView selectRowIndexes:[NSIndexSet indexSetWithIndex:rightClicked] byExtendingSelection:NO]; 
    [mainTableView deselectRow: rightClicked]; 
    [mainTableView reloadData]; 
    { 
+0

reloadData ist unnötig, aber das ist der Weg zu gehen. –

Verwandte Themen