• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Getting the Item from NSOutlineView's Notifications
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Getting the Item from NSOutlineView's Notifications


  • Subject: Re: Getting the Item from NSOutlineView's Notifications
  • From: "Dan S. Camper" <email@hidden>
  • Date: Thu, 30 Jun 2005 20:06:05 -0500

Seth,

This doesn't answer your question about notifications, but I had to save
both selection and expansion states separately from the regular autosave
stuff as well.  What I did was ignore the notification and use a couple of
methods, one of which is:

- (NSArray*) getExpandedItemsUUIDList
{
  NSMutableArray*   theList = [NSMutableArray array];
  int         x = 0;
  int         numRows = [self numberOfRows];

  for (x = 0; x < numRows; x++)
  {
    id  bookmark = [self itemAtRow:x];

    if ([self isItemExpanded:bookmark])
      [theList addObject:[bookmark uuid]];
  }

  return theList;
}

(Apologies for the formatting; I hope it's readable.)  'self' here is a
subclass of NSOutlineView.  The method returns an array of UUIDs that I can
use find my objects again to re-expand them ([self expandItem]).  I run this
just before closing my window, but you could trigger it at other places
(even that notification).

The one minor gotcha I discovered is this:  If you start with a
fully-collapsed list and try to re-expand, you must expand parents before
children or it won't work.  If you re-expand in the same order as the array
above, it will work.

DSC

> I'm trying to save and restore the collapsed/expanded states of an
> outline view that is part of my document's window (and thus I can't
> use the provided autosave stuff) so I need to get the item object
> from the notifications, like:
>
> - (void)outlineViewItemDidExpand:(NSNotification *)notification
>
> But how are you supposed to actually get the item? I used NSLog with
> [notification userInfo] and it prints out that it has a single item
> with {NSObject = blah blah blah}, but the key NSObject doesn't work
> (even though that is clearly shown when printing [[notification
> userInfo] allKeys] and even [[[notification userInfo] allValues]
> objectAtIndex:0] doesn't work because it causes an exception. I've
> Googled, looked on CocoaDev, asked in #macdev on freenode, and looked
> in the list archives on Cocoa Builder. I'm being driven mad!
>
> This should be ridiculously simple, but nothing I try works and I'm
> feeling ridiculously silly!
>
>
>
> --
> Seth Willits
_________________________________________________________________________
Dan S. Camper                                         Borrowed Time, Inc.
Software Thaumaturge                                   http://www.bti.net
                                                  Toll-Free: 877.451.8939
                                                      Texas: 512.451.8939


 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Cocoa-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

  • Follow-Ups:
    • Re: Getting the Item from NSOutlineView's Notifications
      • From: Seth Willits <email@hidden>
  • Prev by Date: Re: Getting the Item from NSOutlineView's Notifications
  • Next by Date: Re: Pro-App Look
  • Previous by thread: Re: Getting the Item from NSOutlineView's Notifications
  • Next by thread: Re: Getting the Item from NSOutlineView's Notifications
  • Index(es):
    • Date
    • Thread