我想你可能需要做一些子類來完成你想要什麼去做。
通過繼承您的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];
}
有誰能夠提供一些幫助,這可能 – Swati