Возможно, я задаю очень простой вопрос, но я не могу понять, как от этого избавиться,
требование
- Таблица должна отображать изображение и текст рядом с ним. Для этого я добавил два столбца в таблицу
- NSTableView должен быть прозрачным. Для этого я создал класс CustomNSTableView внутри метода переопределения drawRect, чтобы не рисовать фон, и запретил ячейке рисоватьBackground.
- Теперь следующее препятствие - как отобразить изображение, мне пришлось переопределить / обработать следующий метод
.
- (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 мне не нужно использовать эту функцию,
При следующей реализации происходит сбой, но я не могу понять, что не так,
Я устанавливаю правильный источник данных и делегат,