2010-11-18 2 views
6

코코아에서 NSTableView/NSOutlineView의 행을 마우스 오른쪽 버튼으로 클릭 할 때 파란색 외곽선을 제거하는 방법이 궁금합니다.NSTableView : 오른쪽 클릭 된 행의 파란색 외곽선

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

고전적인 "하이라이트"도 아니고 "초점 링"나는하지 틀리지 경우 될 것 같지 않습니다 - 그래서, 실제로 무엇인가? 적어도 *하지만 난
*이 너무 자신에 의해이 윤곽을 그리는 중 하나 방법을 알아낼 수 없습니다, 또는
이 * 그것을 제거, 또는
-

나는 현재 자신이 완전히 사용자 정의 NSCells 그리기 해요 그것의 색깔을 바꾸십시오

어떤 힌트든지 대단히 환영합니다! 감사!

답변

12

불행히도 나는 자신 만의 테이블 뷰 대체를 작성하기에는 부족하다는 점을 문서화 된 방법으로 알고 있지 않습니다. 오버라이드 (override)하는

방법은 다음과 같습니다 당신이 미래에하고 싶은 일을하기 위해 문서화되지 않은 방법에 의존하지 않도록

- (void)drawContextMenuHighlightForRow:(NSInteger)row; 

애플과 개선 요청을 제출하시기 바랍니다. 다른 두 개의 테이블보기 강조 방법이 10.6에서 사용자 정의 가능하게 만들어진 것처럼 보이지만이 방법은 그렇지 않습니다. 난 항상 그것이 다소 clunky보고 생각했는데 메뉴가 참조하는 행 (반드시 강조 표시된 행과 동일하지 않음)을 나타내는 것이 필요합니다.

+0

! 고마워, 니콜라스! – Tobidobi

+0

유형 매개 변수가 잘못되었습니다! 64 비트에서 제대로 작동하지 않습니다. –

+0

감사합니다. 잠시 동안 64 비트 코코아를 사용하지 않았습니다. –

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는 필요하지 않지만이 방법을 사용합니다. –

관련 문제