2011-01-18 9 views
1

UI要件は、です。1 - 2列テーブルを表示する必要があります。最初のcolは画像を表示し、2列目は何らかのテキストを表示します。 2 - 表示するように透明にする必要があります。 NSViewの背景は、NSTableView transparent TableView

私のコードは

、以下のように書かれている私は、NSTableViewが

01以下のようなテーブルインスタンスを作成し、私の見解では、以下の方法

-(void)awakeFromNib 
{ 

    [[self enclosingScrollView] setDrawsBackground: NO]; 
    [[self enclosingScrollView] setBorderType:NSNoBorder]; 

} 

- (BOOL)isOpaque { 

    return NO; 
} 
- (void)drawRect:(NSRect)drawRect 
{ 
    [super drawRect: drawRect]; 
} 

をオーバーライドサブクラス

@interface MyView : CommUICustomView { 
    CustomTableView *myTableView; 
} 

//実装

- (void)InitContactTable 
{ 

    NSRect   scrollFrame = [self bounds]; 
    NSScrollView* scrollView = [[[NSScrollView alloc] initWithFrame:scrollFrame] autorelease]; 

    [scrollView setBorderType:NSNoBorder]; 
    [scrollView setHasVerticalScroller:YES]; 
    [scrollView setHasHorizontalScroller:NO]; 
    [scrollView setAutohidesScrollers:YES]; 
    [scrollView setDrawsBackground: NO]; 

    NSRect   clipViewBounds = [[scrollView contentView] bounds]; 
    pOnLineCTView  = [[[CommUITableView alloc] initWithFrame:clipViewBounds] autorelease]; 

    //[pOnLineCTView setBackGroundImageByName:@"largegears.png"]; 


    NSTableColumn* firstColumn  = [[[NSTableColumn alloc] initWithIdentifier:@"firstColumn"] autorelease]; 
    [[firstColumn dataCell] setDrawsBackground:NO]; 

    [myTableView addTableColumn:firstColumn]; 

    NSTableColumn* secondColumn  = [[[NSTableColumn alloc] initWithIdentifier:@"secondColumn"] autorelease]; 
    [[secondColumn dataCell] setDrawsBackground:NO]; 

    [myTableView addTableColumn:secondColumn]; 

    [myTableView setDataSource:self]; 
    [scrollView setDocumentView:pOnLineCTView]; 

    [scrollView setAutoresizingMask:NSViewWidthSizable|NSViewHeightSizable]; 

    [self addSubview:scrollView]; 

    [self setAutoresizesSubviews:YES]; 


} 

上記のコードの出力は、私がNoofRowは0で設定されていても、つまり白の背景が 次は、私は背景を実施し、試してみました、描かれてきている、白い背景を持つ表ですCustomTableViewのdrawRectメソッドをオーバーライドすることでTableViewでそれを助けてくれました。出力は背景画像です。透明になり、親ビューの背景が表示されますが、白い色で塗りつぶされているようです。列やセルのために白い色が表示されます。 Backgorundを描画しないようにCell of Columnに伝えようとしましたが、うまくいかなかった 他の人が私に提案できる方法。

+0

実装を上書きしない場合は、draxRect:を上書きしないでください。実際、オーバーライドしないメソッドはオーバーライドしないでください。不要なコードが追加されます。 ;-) –

答えて

0

その作業が、私はまたdrawBackgroundInClipRectをオーバーライドしますが、後にこの方法をコメントした、私が期待される出力を見ることができ、

今私は、テーブルセルのデータがその上に表示された状態で透明な背景を見ることができます。