UI 要件は次のとおりです。1 -- 2 列のテーブルを表示する必要があります。最初の列に画像を表示し、2 番目の列にテキストを表示する必要があります。2 -- 透明にする必要があるため、NSView の背景を表示する必要があります。
私のコードは以下のように書かれています、
次のメソッドをオーバーライドする NSTableView をサブクラス化します
-(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 に Background を実装しようとしましたが、助けになり、出力は Background です画像、透明を実現して親ビューの背景を表示するために、白い色でペイントされているようですが、列またはセルのために白い色が描画されるようです。列のセルにバックゴーンドを描画しないように指示しようとしましたが、うまくいきませんでした。誰でも私に提案できる他の方法。