NSOutlineView + NSTreeNode: куда делись мои пользовательские данные? - PullRequest
2 голосов
/ 06 февраля 2012

Я устанавливаю 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;
}

Любая помощь приветствуется.

1 Ответ

1 голос
/ 10 июля 2012

Вы должны заполнить NSTreeController своими собственными экземплярами данных, а не NSTreeNode.

...