2011-02-07 26 views
0

在我的大綱視圖中,我使用CustomCell,這只不過是把代碼從可可ImageTextCell RefrenceCode經過一些修改,NSOutlineView控制高亮和壓痕

是否有可能改變細胞的高亮顏色?

到目前爲止,我已經做以下, - (空)drawWithFrame:(的NSRect)cellFrame inView:(的NSView *)controlView {

if([self isHighlighted]){ 
    NSColor *evenColor = [NSColor colorWithCalibratedRed:.1 green:0.1 blue: 0.1 
     alpha:1.0]; 
    [evenColor set]; 
    NSRectFill(cellFrame); 
    bSelected = YES; 
} 

}

這是工作,但所發生的事情,我可以看到,hightlight單元格顏色首先從系統默認的顏色開始,然後,它會通過evenColor得到覆蓋, 我覺得這個問題是cellFrame.origin.x,它不是從0開始,之後

產量如下應用克這種一段代碼

----- My Custom Cell ---------------- 
====================================== 
| blue |        | 
| color| even Color    | 
|  |        | 
====================================== 

和我所期待的

----- My Custom Cell ---------------- 
====================================== 
|         | 
| even Color      | 
|         | 
====================================== 

回答

0

的高亮由NSOutlineView(當然,實際上,它繼承了NSTableView行爲)來處理。無論如何,您應該關注NSOutlineView並覆蓋highlightSelectionInClipRect:,而不是關注單元格。這就是你應該做自定義高光繪圖的地方。

+0

不建議從NSOutlineView繼承子類(http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSOutlineView_Class/Reference/Reference.html) – 2011-08-15 10:29:52