2010-11-18 6 views
6

Tôi tự hỏi làm cách nào để loại bỏ các đường viền màu xanh mà Cocoa vẽ xung quanh các hàng trong NSTableView/NSOutlineView khi nhấp chuột phải vào chúng.NSTableView: viền màu xanh trên các hàng được nhấp chuột phải

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

Nó dường như không phải là một "điểm nhấn" cổ điển hay một "vòng lấy nét" nếu tôi không nhầm - vì vậy, nó là gì, trên thực tế?

tôi đang vẽ NSCells tùy chỉnh hoàn toàn bản thân mình - nhưng tôi không thể tìm ra cách để một trong hai
* vẽ phác thảo này bởi bản thân mình cũng vậy, hoặc
* thoát khỏi nó, hoặc
* ít nhất đổi màu của nó

Bất kỳ gợi ý nào đều được hoan nghênh! Cảm ơn!

Trả lời

12

Rất tiếc, tôi không biết bất kỳ cách nào được làm tài liệu để thực hiện việc này, viết tắt thay thế chế độ xem bảng của riêng bạn.

Phương pháp này để ghi đè lên là:

- (void)drawContextMenuHighlightForRow:(NSInteger)row; 

Hãy gửi một yêu cầu tăng cường với Apple, do đó bạn sẽ không cần phải dựa vào các phương pháp không có giấy tờ để làm những gì bạn muốn trong tương lai. Có vẻ như hai phương pháp đánh dấu chế độ xem bảng khác đã được thực hiện tùy chỉnh trong 10.6 nhưng điều này là không. Tôi đã luôn luôn nghĩ rằng nó là một chút clunky tìm kiếm nhưng nó là cần thiết để chỉ ra những gì hàng trình đơn được tham chiếu (không nhất thiết phải giống như hàng được đánh dấu).

+0

Điều đó đã làm các trick! Cảm ơn, Nicholas! – Tobidobi

+0

Thông số loại sai !! Nó sẽ không hoạt động trong 64 bit. –

+0

Cảm ơn, tôi đã không làm ca cao 64 bit trong một thời gian ở đó. –

1

My NSTableView * mainTableView không phải là tiểu phân loại vì vậy tôi đã thoát khỏi nó ngay trước khi mở menu ngữ cảnh:

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

reloadData là không cần thiết, nhưng đây là con đường để đi. –