2010-11-18 12 views
6

NSTableView/NSOutlineViewで右クリックしたときにココアが描く青の輪郭をどのように取り除くことができるのでしょうか。NSTableView:右クリックされた行の青い輪郭

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

私が間違っていない場合は、古典的な「ハイライト」や「フォーカスリング」ではないようです - 実際には、そう、それは何ですか?

私は現在、完全に自分自身をカスタムNSCellsを描いている - しかし、私は
*あまりにも、自分でこのアウトラインを描き、または
*それを取り除く、または
*少なくともするいずれかの方法を見つけ出すことはできません色を変更してください

どのようなヒントも大歓迎です!ありがとう!

答えて

12

私は残念ながら、これを行うための文書化された方法は認識していません。独自のテーブルビューの置き換えを書いていません。

オーバーライドする方法は次のとおりです。

- (void)drawContextMenuHighlightForRow:(NSInteger)row; 

あなたが将来的にやりたい文書化されていない方法に頼る必要がないようにAppleと拡張要求を提出してください。他の2つのテーブルビューハイライトメソッドが10.6でカスタマイズ可能になっているように見えますが、これはそうではありませんでした。私はいつも見た目がちょっと鈍いと思っていましたが、メニューがどの行を参照しているかを示す必要があります(強調表示された行と必ずしも同じではない)。

+0

トリックをしました!ありがとう、ニコラス! – Tobidobi

+0

型パラメータが間違っています! 64ビット版では正しく動作しません。 –

+0

ありがとう、私はしばらくの間、64ビットのCocoaをやっていませんでした。 –

1

私のNSTableView * mainTableViewは、サブ分類ので、私はコンテキストメニューが開く直前にそれを処分したではありません。

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

reloadDataは不要ですが、これが方法です。 –