NSTableView прозрачный TableView

Требование к пользовательскому интерфейсу: 1 -- Необходимо отобразить таблицу из двух столбцов, первый столбец должен отображать изображение, а второй столбец будет иметь некоторый текст, 2 -- Он должен быть прозрачным, поэтому он должен отображать фон NSView,

Мой код написан, как показано ниже,

I подкласс 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, т.е. белый фон рисуется, затем я попытался реализовать фон в TableView, переопределив метод drawRect CustomTableView, это помогло мне, и вывод - фон изображение, чтобы добиться прозрачности и показать фон родительского просмотра, но окрашенный в белый цвет, кажется, что он получает белый цвет, нарисованный из-за столбца или ячейки, я пытался указать ячейке столбца не рисовать Backgorund, но это не сработало, Любой другой метод, какие ребята могут мне предложить.


person Amitg2k12    schedule 18.01.2011    source источник
comment
Вы не должны переопределять draxRect:, если вы не переопределяете его реализацию. Фактически, вы не должны переопределять какие-либо методы, которые вы не переопределяете. Он просто добавляет ненужный код. ;-)   -  person Constantino Tsarouhas    schedule 13.08.2011


Ответы (1)


Это работает, я также переопределял drawBackgroundInClipRect, но после того, как прокомментировал этот метод, я мог увидеть ожидаемый результат,

Теперь я вижу прозрачный фон с отображаемыми на нем данными ячейки таблицы.

person Amitg2k12    schedule 18.01.2011