2011-01-21 4 views
0

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

  1. Таблица должна отображать изображение и текст следующего к тому, что. Для этого я добавил в таблицу два столбца
  2. NSTableView должен быть прозрачным. Для этого я создал класс CustomNSTableView, внутри переопределяет метод drawRect, чтобы не рисовать фон, и не указывал ячейке drawBackground.
  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 == всухую состояние, как и в документации ее дали, первый раз для каждой строки, это будет вызываться с TableColumn ноль, когда я необходимо установить один столбец для всей строки, но если я вернуть его сбои с комментарием BAD_ACCESS,

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

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

Я считаю, после того, как установка DataSet правильно я не нужно использовать эту функцию,

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

я выставлению правильного DataSource и делегат,

+0

очень странно, если я комментирую setRowHeight, то его не ударяют EXE_BAD_ACCESS :( – Amitg2k12

ответ

1

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

[myTableView setBackgroundColor:[[NSColor clearColor]]; 

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

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

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

Смежные вопросы