2011-02-22 84 views
4

我有一個NSTableView,下面有一個「添加」按鈕。當我點擊按鈕時,一個新行被添加到表中並準備好用戶輸入。添加透明背景的行

該行顯示爲白色。我可以將行的顏色設置爲透明顏色嗎?這可能嗎?我無法弄清楚如何做到這一點。

我的設置我的表是透明代碼:

[myTable setBackgroundColor:[NSColor clearColor]]; 
[[myTable enclosingScrollView] setDrawsBackground: NO]; 

代碼添加一行:

[myTableArray addObject:@""]; 
[myTable reloadData]; 
[myTable editColumn:0 row:[myTableArray count]-1 withEvent:nil select:YES]; 
+0

有誰能夠提供一些幫助,這可能 – Swati

回答

0

我想你可能需要做一些子類來完成你想要什麼去做。

通過繼承您的NSTableView的可以覆蓋preparedCellAtColumn:行:方法如下所示:

- (NSCell*) preparedCellAtColumn:(NSInteger)column row:(NSInteger)row { 
    NSTextFieldCell *edit_field; 

    edit_field = (NSTextFieldCell*) [super preparedCellAtColumn:column row:row]; 
    if ([self editedRow] == row && [self editedColumn] == column ) { 
     [edit_field setBackgroundColor:[NSColor clearColor]]; 
     [edit_field setDrawsBackground:NO]; 

    } 

    return edit_field; 
} 

然而,NSTableView的文件表明,你的電池有所謂的另一種方法,這似乎恢復顏色。 (editWithFrame:inView:editor:delegate:event :)創建一個覆蓋此方法的NSTextViewCell的子類可以做你正在尋找的東西。

編輯 通過我發現這個文檔搜索:

如果接收者不是文本類型的NSCell對象,不執行編輯。否則,字段編輯器(textObj)的大小設置爲aRect,其超級視圖設置爲controlView,因此它完全覆蓋接收器。

因此,在這種情況下需要自定義的是字段編輯器,它涵蓋了您在NSTableView或單元格上執行的所有顯示更改。 toObject:

這應該讓你設置的編輯的單元格的屬性返回給NSTableView的前

編輯 試過這

字段編輯器是由窗口代表的方法windowWillReturnFieldEditor返回無果,但可能助陣:

-(id) windowWillReturnFieldEditor:(NSWindow *)sender toObject:(id)client{ 
    NSText *editor = [window fieldEditor:YES forObject:client]; 
    [editor setBackgroundColor:[NSColor clearColor]]; 
    [editor setDrawsBackground:NO]; 
    return [editor autorelease]; 
} 
+0

thabks酒店fr UR答案我回來在這個項目上我會盡快嘗試。 – Swati

1

嘗試設置單元格背景顏色透明

[cell setBackgroundColor:[UIColor clearColor]];

它爲我工作

+1

這適用於觸摸應用程序,但我需要非觸摸可可應用程序:) – Swati