Решил!
Оказалось, я должен был реализовать следующий метод в NSOutlineView
делегате
- (NSView *)outlineView:(NSOutlineView *)outlineView
viewForTableColumn:(NSTableColumn *)tableColumn
item:(id)item {
if ([self outlineView:outlineView isGroupItem:item]) {
NSString *vId = [[[outlineView tableColumns] objectAtIndex:0] identifier];
return [outlineView makeViewWithIdentifier:vId owner:self];
}
return [outlineView makeViewWithIdentifier:[tableColumn identifier] owner:self];
}
По-видимому, по умолчанию представление на основе NSOutlineView генерирует представление для каждой ячейки в таблице, находя представление с тем же идентификатором, что и столбец. В случае группового элемента / строки группы, однако, tableColumm
не связано с этой строкой, поэтому представление оказывается нулевым и не отображается.
Игра с примером Apple TableViewPlayground действительно помогла! Настоятельно рекомендуется!