В настоящее время я пытаюсь использовать новый NSOutlineView на основе представления в моем приложении Какао. Поскольку я не использую привязки, я реализовал все необходимые методы делегата и источника данных в своем контроллере.
В построителе интерфейса я добавил NSOutlineView с выделением, установленным на SourceList , и режимом содержимого, установленным на View Based . Таким образом, было предоставлено два представления ячеек таблицы по умолчанию (одна ячейка заголовка с HeaderCell , установленная в качестве идентификатора, и одна ячейка данных с DataCell , установленная в качестве идентификатора)
Вот как это выглядит в построителе интерфейса в представлениях ячеек заголовка правильно отображается серо-синее текстовое поле , в то время как представления ячеек данных имеют представление изображения и текстовое поле с правильными настройками цвета и шрифта.
Чтобы предоставить представления, я использую следующий код, чтобы вернуть представление DataCell или представление HeaderCell и установить текстовое поле ячейки соответственно на основе соответствующего идентификатора, установленного в построителе интерфейса.
- (NSView *)outlineView:(NSOutlineView *)outlineView
viewForTableColumn:(NSTableColumn *)tableColumn
item:(id)item {
NSTableCellView *result = nil;
if ([item isKindOfClass:[NSMutableDictionary class]]) {
result = [outlineView makeViewWithIdentifier:@"HeaderCell" owner:self];
id parentObject = [outlineView parentForItem:item] ? [outlineView parentForItem:item] : groupedRoster;
[[result textField] setStringValue:[[parentObject allKeys] objectAtIndex:0]];
} else {
result = [outlineView makeViewWithIdentifier:@"DataCell" owner:self];
[item nickname] ? [[result textField] setStringValue:[item nickname]] : [[result textField] setStringValue:[[item jid] bare]];
}
return result;
}
Запускаем все это выглядит следующим образом.
Может ли кто-нибудь дать мне подсказку, почему ячейка заголовка не выделена жирным шрифтом и не окрашена правильно при выборе?