Как НЕ отображать определенные узлы в виде структуры?

В приложении Apple Mail в виде структуры слева папка "Входящие" или папка отображаются иерархически, но электронные письма в папке или электронном письме не отображаются вообще.

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

У меня есть контурный вид, связанный с контроллером дерева. Объекты (узлы) добавляются в древовидный контроллер и отображаются в виде структуры. Как я могу предотвратить появление некоторых объектов? В частности, у меня есть узлы папок, которые содержат экземпляры пользовательского объекта. Как и в 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.

1 ответ

Решение

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

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

Другие вопросы по тегам