В настоящее время я пытаюсь использовать новый NSOutlineView на основе представления в своем приложении Cocoa. Поскольку я не использую привязки, я реализовал все необходимые методы делегата и источника данных в своем контроллере.
В построителе интерфейсов я добавил NSOutlineView с выделением, установленным на SourceList, и режимом содержимого, установленным на View Based. Таким образом, было предоставлено два представления ячеек таблицы по умолчанию (одна ячейка заголовка с HeaderCell, установленной в качестве идентификатора, и одна ячейка данных с DataCell, установленной в качестве идентификатора).
Вот как это выглядит в построителе интерфейса: представления ячеек заголовка правильно отображают серо-голубое textField, в то время как представления ячеек данных имеют представление изображения и textField с правильным цветом и шрифтом. настройки
Чтобы предоставить представления, я использую следующий код, чтобы вернуть представление 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;
}
Запустив все это выглядит следующим образом.
Может ли кто-нибудь дать мне подсказки, почему ячейка заголовка не выделена жирным шрифтом и не окрашена правильно при выборе?