• 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: Need help programatically wiring up an NSTreeController to an NSOutlineView
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Need help programatically wiring up an NSTreeController to an NSOutlineView


  • Subject: Re: Need help programatically wiring up an NSTreeController to an NSOutlineView
  • From: Ron Lue-Sang <email@hidden>
  • Date: Thu, 30 Oct 2008 16:22:29 -0700






A higher level object (PMController ) contains an NSMutableArray property which stores a collection of "PMProject" objects and an NSTreeController property to serve as the intermediary between the NSMutableArray and an NSOutlineView.

I'm setting up the NSTreeController like so:

- (void) initTableController
{
tableController = [[NSTreeController alloc] initWithContent: nil];
[tableController setChildrenKeyPath: @"children"];
[tableController setLeafKeyPath: @"isLeafNode"];
// NOTE: PMController is a singleton class that stores an
// NSMutable array of currently open PMProject objects
[tableController bind: @"contentArray" toObject: [PMController sharedController] withKeyPath: @"currentProjects" options: nil];
}


And am trying to bind the "name" column of the NSOutlineView to the NSTreeController like this

- (void) initMyProjectOutline
{
// create text cell
nameCell = [[NSTextFieldCell alloc] init];

// create the name column
nameColumn = [[NSTableColumn alloc] initWithIdentifier: @"name"];
[nameColumn setDataCell: nameCell];
[nameColumn setMinWidth: 1000];
// bind value to MyProject:name accessor
// NOTE: I've tried both of the following but am getting nothing in the NSOutlineView "name" column
[nameColumn bind: @"value" toObject: tableController withKeyPath: @"content.name " options: nil];
[nameColumn bind: @"value" toObject: [tableController content] withKeyPath: @"name" options: nil];

// create the table
table = [[NSOutlineView alloc] initWithFrame: tableFrame];
[table addTableColumn: nameColumn];
[table setHeaderView: nil];
[table setAutoresizingMask: NSViewWidthSizable | NSViewMaxYMargin];
[table setUsesAlternatingRowBackgroundColors: YES];
[table setFocusRingType: NSFocusRingTypeNone];
[table setColumnAutoresizingStyle: NSTableViewLastColumnOnlyAutoresizingStyle];
[table bind: @"content" toObject: tableController withKeyPath: @"content" options: nil];

[self addSubview: table];


Reverse the order here. Add the column to the outlineView and then bind it (the column). The binding for the column should be
[nameColumn bind: @"value" toObject: tableController withKeyPath: @"arrangedObjects.name " options: nil];


And you don't have to bind the outlineView's content at all. That happens automatically when you bind one of the outlineView's columns. By binding the column after it's added to the outlineView, you'll also get the sortDescriptors and selectionIndexPaths bindings set up for you.



--------------------------
RONZILLA

_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


  • Follow-Ups:
    • Re: Need help programatically wiring up an NSTreeController to an NSOutlineView
      • From: Ken Tozier <email@hidden>
References: 
 >Need help programatically wiring up an NSTreeController to an NSOutlineView (From: Ken Tozier <email@hidden>)

  • Prev by Date: Re: Porting from Windows to Mac
  • Next by Date: Re: detecting an option-click on a button
  • Previous by thread: Need help programatically wiring up an NSTreeController to an NSOutlineView
  • Next by thread: Re: Need help programatically wiring up an NSTreeController to an NSOutlineView
  • Index(es):
    • Date
    • Thread