Skip navigation.
 
mlRe: NSOutlineView autosaving of expanded/collapsed state
FROM : Jonathan Dann
DATE : Sun Feb 24 23:37:31 2008

Hi Ralph,

Here's my code from an NSOutlineView subclass

- (NSArray *)expandedItems;
{
   NSMutableArray *expandedItemsArray = [NSMutableArray array];
   NSUInteger row, numberOfRows = [self numberOfRows];
   
   for (row = 0 ; row < numberOfRows ; row++)
   {
       id item = [self itemAtRow:row];
       if ([self isItemExpanded:item])
           [expandedItemsArray addObject:[item representedObject]]; // create 
an array of only the expanded items in the list
   }
   
   return [[expandedItemsArray copy] autorelease];
}

The returned array can then be archived.

It uses NSTreeNode and -representedObject, so is 10.5 only. For 10.4 
there is an undocumented method for the private class that 
NSTreeController used in 10.4 that does the same thing, can't remember 
the method name but it's on Scott Stevenson's blog somewhere, just 
Google theococoa.com and NSTreeController.

Passing the (now unarchived) array to the method below will expand 
them again.

- (void)expandItems:(NSArray *)array;
{
   NSUInteger row, numberOfRows = [self numberOfRows];
   for (MyNode *savedItem in array) {
       for (row = 0 ; row < numberOfRows ; row++) {
           id item = [self itemAtRow:row];
           MyNode *realObject = [item representedObject];
           if ([realObject.nodeName isEqualToString:savedItem.nodeName]) {
               [self expandItem:item];
               numberOfRows = [self numberOfRows];
               break;
           }
       }
   }    
}

Enjoy,

Jon

Related mailsAuthorDate
mlNSOutlineView autosaving of expanded/collapsed state Ralph Manns Feb 23, 02:58
mlRe: NSOutlineView autosaving of expanded/collapsed state Jonathan Dann Feb 23, 23:44
mlRe: NSOutlineView autosaving of expanded/collapsed state Ralph Manns Feb 24, 22:35
mlRe: NSOutlineView autosaving of expanded/collapsed state Jonathan Dann Feb 24, 23:37
mlRe: NSOutlineView autosaving of expanded/collapsed state Ralph Manns Feb 24, 23:45
mlRe: NSOutlineView autosaving of expanded/collapsed state Keith Duncan Feb 25, 00:56
mlRe: NSOutlineView autosaving of expanded/collapsed state I. Savant Feb 25, 01:07
mlRe: NSOutlineView autosaving of expanded/collapsed state Jonathan Dann Feb 25, 23:16