После исследования этой проблемы самостоятельно и пробуя некоторые ответы здесь, я обнаружил, что другие упомянутые подходы будут работать, но потребуют, чтобы вы выполняли намного больше ручного вмешательства, чтобы избежать артефактов экрана и другого странного поведения.
Самое простое решение, которое я нашел, это следующее, которое должно работать в большинстве случаев.
Это решение имеет дополнительное преимущество, заключающееся в том, что система автоматически обрабатывает множество других случаев, таких как перемещение столбцов и т. Д., Без вашего участия.
- (void)outlineView:(NSOutlineView *)outlineView willDisplayOutlineCell:(id)cell
forTableColumn:(NSTableColumn *)tableColumn
item:(id)item
{
[cell setImage:[NSImage imageNamed: @"Navigation right 16x16 vWhite_tx"]];
[cell setAlternateImage:[NSImage imageNamed: @"Navigation down 16x16 vWhite_tx"]];
}
В вашем случае вы бы обернулиэто с вашей логикой обнаружения класса, и установить изображения ячеек в соответствии с вашими делами.