2012-05-19 2 views
0

В приложении «Почта Apple» в виде схемы слева отображается папка «Входящие» или папка в иерархии, но письма в папке или электронной почте вообще не отображаются.Как НЕ отображать определенные узлы в виде контура?

Я хотел бы воспроизвести эту функцию.

У меня есть схематический вид, связанный с контроллером дерева. Объекты (узлы) добавляются в древовидный контроллер и отображаются в виде схемы. Как я могу предотвратить появление некоторых объектов? В частности, у меня есть узлы папки, которые содержат экземпляры настраиваемого объекта. Как и в Mail.app, я хотел бы отображать только папку в виде контура и отображать пользовательские объекты в другом представлении.

Некоторые коды контроллеров согласно запросу; здесь я добавляю узлы к folderNode, который выбран в режиме структуры:

indexPath = [treeController selectionIndexPath]; 
indexPath = [indexPath indexPathByAddingIndex:[[[[treeController selectedObjects] objectAtIndex:0] children] count]];//want to insert the new node at the end of the folder node's array of children 
    ... 
[treeController insertObject:customObjectNode atArrangedObjectIndexPath:indexPath]; 
NSLog(@"No. of items selected in tree controller/outline view is %i",[[treeController selectedNodes] count]); //if the folderNode is a leaf, this gives 0, i.e. no selection 

// if the folderNode is not a leaf, the added child automatically becomes selected by NSOutlineView. In that case I keep its parent selected (the folder) so the next customObjectNode can be added 
[self selectParentFromSelection];//however this method will then do nothing because at this point nothing is selected. Now this whole paragraph of code cannot be repeated because nothing is selected so the first line of code doesn't work. 

ответ

0

Используете ли вы какие-либо другие контроллеры дерева, которые должны продолжать детям?

Если нет, просто верните узлы папки YES в -isLeaf (и nil для ключа childNodes).

+0

Нет других контроллеров деревьев, но я использую контроллер массива для отображения пользовательских объектов в виде таблицы. К сожалению, после того, как узел папки был листом, когда я вставляю пользовательский объект через контроллер дерева, в древовидном контроллере ничего не выбрано ([[treeController selectedNodes] count] возвращает 0). Я не могу программным способом выбрать что-либо. Это нарушило мой код - пользовательский объект может быть добавлен только к узлу папки после выбора в пользовательском интерфейсе. Кроме того, можете ли вы подтвердить, как вы установите childNodes для возврата nil - когда я это сделаю, это не имеет значения. Спасибо Ноа. –

+0

Что вы подразумеваете под «вставкой пользовательского объекта через контроллер дерева»? Вы разместили бы свой код контроллера? – paulmelnikow

+0

Извините за путаницу, я имею в виду узел, у которого есть информация, которую я пытаюсь отобразить в виде таблицы. Чтобы продолжить аналогию с Mail.app, моими «настраиваемыми объектами» являются сообщения электронной почты. Я использовал файл BaseNode.m из примера SourceView от Apple, и мой узел папок наследует его (@interface FolderNode: BaseNode), как и узел (который я называю настраиваемым объектом здесь), который я помещал в папки (@interface customObjectNode: BaseNode). Я разместил соответствующий код выше. Дайте мне знать, если что-нибудь еще. Еще раз спасибо. –

 Смежные вопросы

  • Нет связанных вопросов^_^