Я устанавливаю NSOutlineView, привязанный к NSTreeController, который заполнен экземплярами NSTreeNode
, причем последний имеет мои собственные объекты NodeData, прикрепленные с использованием [NSTreeNode treeNodeWithRepresentedObject:...]
.
Схематическое представление выглядит очень хорошо, все данные там, как и ожидалось, все хорошо.
Теперь в представлении структуры представления я пытаюсь изменить стиль визуализации с помощью
outlineView:willDisplayCell:forTableColumn:item:
метод.
Однако параметр item
не вернет мне мои пользовательские данные!
id stuff = [item representedObject];
возвращает экземпляр класса NSTreeNode
, где item является NSTreeControllerTreeNode
.
Что, черт возьми, происходит?
В соответствии со всей документацией и образцом кода, который я мог найти, вызов функции namedObject должен вернуть мне объект NodeData
, который я вставил в NSTreeNode при построении дерева ..
Абсолютно невежественный, поскольку я, кажется, единственный человек, имеющий эту проблему, поэтому я должен где-то делать что-то действительно глупое - но я не вижу, что не так с кодом.
Заполнение древовидного контроллера программно с помощью setContent:[dataSource sillyHack]
с таким тривиальным содержанием показывает то же поведение:
- (NSMutableArray *) sillyHack
{
NSMutableArray *nodeArray = [NSMutableArray array];
NodeData *scaleTypeListNode = [[NodeData alloc] initWithName:@"123"];
NSTreeNode *scaleTypeListTreeNode = [NSTreeNode treeNodeWithRepresentedObject:scaleTypeListNode];
[scaleTypeListNode release];
[nodeArray addObject:scaleTypeListTreeNode];
return nodeArray;
}
Любая помощь приветствуется.