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
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 mails | Author | Date |
|---|---|---|
| Ralph Manns | Feb 23, 02:58 | |
| Jonathan Dann | Feb 23, 23:44 | |
| Ralph Manns | Feb 24, 22:35 | |
| Jonathan Dann | Feb 24, 23:37 | |
| Ralph Manns | Feb 24, 23:45 | |
| Keith Duncan | Feb 25, 00:56 | |
| I. Savant | Feb 25, 01:07 | |
| Jonathan Dann | Feb 25, 23:16 |






Cocoa mail archive

