NstableView отображение изображения в одной ячейке
-
16-10-2019 - |
Вопрос
Я мог бы задавать очень простой вопрос, но я не могу избавиться от этого, требование
- Таблица должна отображать изображение и немного текста рядом с этим. Для этого я добавил два столбца в таблице
- NstableView должен быть прозрачным. Для этого я сделал класс CustomNStableView, внутренний метод переопределения, чтобы не нарисовать фон, и сказал Cell не Dealsback Ground.
- Теперь следующее препятствие - как отобразить изображение, мне пришлось переопределить/обрабатывать следующий метод
.
- (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;
}
}
Я добавил CableColumn == Nil Condition, как и в документации, в первый раз для каждой строки, это будет вызвано с помощью TableColumn NIL, когда мне нужно установить один столбец для всей строки, но если я верну его сбой с помощью комментария BAD_ACCESSE В
Теперь мой вопрос заключается в том, как справиться с условиями NIL, также в этой функции после настройки NSCELL для обоих столбцов, он переходит к другой функции делегата
- (id) tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
Я считаю, что после правильного настройки набора данных мне не нужно использовать эту функцию,
С следующей реализацией его сбоя, но я не могу понять это, что не так,
Я устанавливаю правильный источник данных и делегат,
Решение
Вы пробовали позвонить в Setbackgroundcolor и пропустить чистый цвет?
[myTableView setBackgroundColor:[[NSColor clearColor]];
Если вы используете этот метод, не забудьте сказать окружающему NSSccrollview, чтобы не рисовать его фон.
В качестве альтернативы подумайте о предоставлении фона таблицы как Calayer.
Что касается рисования изображения и текста в одном столбце, отношения разработчиков Apple опубликовали пользовательский NSCELL, ImageAndTextCell. Анкет Вы можете использовать эту ячейку со экземплярами nstableview и nsoutlineview. Эта пользовательская ячейка имеет дело с рисованием изображения и текста в одном столбце.