NSTableView отображать изображение в одной ячейке - PullRequest
0 голосов
/ 21 января 2011

Возможно, я задаю очень простой вопрос, но я не могу понять, как от этого избавиться, требование

  1. Таблица должна отображать изображение и текст рядом с ним. Для этого я добавил два столбца в таблицу
  2. NSTableView должен быть прозрачным. Для этого я создал класс CustomNSTableView внутри метода переопределения drawRect, чтобы не рисовать фон, и запретил ячейке рисоватьBackground.
  3. Теперь следующее препятствие - как отобразить изображение, мне пришлось переопределить / обработать следующий метод

.

- (NSCell *)tableView:(NSTableView *)tableView dataCellForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{

    NSImage *pCellImage = // Get a valid Image ;

    if(tableColumn == nil ) return nil;

    NSString *colName = [tableColumn identifier];
    if([colName isEqualToString:@"firstColumn"]){
        NSCell *pCell = [[NSCell alloc]initImageCell:pCellImage];
        return pCell;
    }else{
        NSCell *pCell = [[NSCell alloc]initTextCell:@"Some text"];
        return pCell;

    }
}

Я добавил условие tableColumn == nil, так как в документации оно приводится, в первый раз для каждой строки, это будет вызываться с tableCOlumn nil, когда мне нужно установить один столбец для всей строки, но если я верну его сбой с комментарий BAD_ACCESS,

Теперь мой вопрос, как справиться с нулевым состоянием, Также в этой функции после установки NSCell для обоих столбцов она переходит к другой функции делегата

- (id) tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex

Я считаю, что после правильной установки dataSet мне не нужно использовать эту функцию,

При следующей реализации происходит сбой, но я не могу понять, что не так,

Я устанавливаю правильный источник данных и делегат,

1 Ответ

1 голос
/ 23 января 2011

Вы пытались вызвать setBackgroundColor и передать чистый цвет?

[myTableView setBackgroundColor:[[NSColor clearColor]];

Если вы используете этот метод, не забудьте сказать окружающему NSScrollView не рисовать его фон.

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

Что касается рисования изображения и текста в одном столбце, отношения с разработчиками Apple опубликовали пользовательский NSCell, ImageAndTextCell .Вы можете использовать эту ячейку с экземплярами NSTableView и NSOutlineView.Эта пользовательская ячейка предназначена для рисования изображения и текста в одном столбце.

...