• 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: Connecting Outlet on Derived Array Controller
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Connecting Outlet on Derived Array Controller


  • Subject: Re: Connecting Outlet on Derived Array Controller
  • From: Quincey Morris <email@hidden>
  • Date: Mon, 1 Mar 2010 10:08:01 -0800

On Mar 1, 2010, at 08:48, Joanna Carter wrote:

> Actually, I don't really want a "dependent" property. All I want is a way to be able to pass a property on the main controller class to each of three derived array controllers, so that they can use that value to set a property on every new item added to the array controller.
>
> At the moment, I am manually passing the value to each of the array controllers in the windowControllerDidLoadNib: method of the main controller.
>
> This is fine but, since I will need to do the same thing in other scenarios, I wanted to create a derived array controller component that I could add to a NIB and setup in IB, rather than having to write the hookup code every time.
>
> - (void)windowControllerDidLoadNib:(NSWindowController *)windowController
> {
>  [super windowControllerDidLoadNib:windowController];
>
>  [myExtendedArrayController setExtraProperty:[self extraProperty]];
>
>  ...
> }

You want to "pass a property"? What does that mean? Never mind -- it's clear from your second paragraph that you mean "pass a value". I'm rudely pointing this out because using precise terms precisely is important, and you've led yourself astray multiple times in this thread by using them imprecisely.

If you don't really want a dependent property, then you certainly don't want a binding. Bindings are a more complicated version of a dependent property.

You can achieve what you said above very simply. The cheap version goes like this:

-- Add an IBOutlet to your NSArrayController subclass. Call it (say) owningWindowController. Or anything you like that doesn't conflict with an existing name.

-- When you instantiate one of these custom array controllers in IB, connect its owningWindowController outlet to File's Owner.

-- In your custom array controller's awakeFromNib method, do the following:

	myExtraProperty = [owningWindowController extraProperty];

That's it.

The classy version is only slightly more complicated:

-- Define a protocol. Call it (say) extraPropertyProviderProtocol. The protocol contains just one thing, the "extraProperty" property definition.

-- Have your window controller formally adopt the protocol. (It already implements it.)

-- Declare your custom array controller outlet as IBOutlet NSObject<extraPropertyProviderProtocol>* extraPropertyProvider.

-- Connect the outlet to File's Owner, as before.

-- In your custom array controller's awakeFromNib method, do the following:

	myExtraProperty = extraPropertyProvider.extraProperty;

That way, File's Owner isn't unnecessarily constrained to be a particular class of object. It can be any object that conforms to the protocol.


_______________________________________________

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: Connecting Outlet on Derived Array Controller
      • From: Joanna Carter <email@hidden>
References: 
 >Re: Connecting Outlet on Derived Array Controller (From: Joanna Carter <email@hidden>)
 >Re: Connecting Outlet on Derived Array Controller (From: Joanna Carter <email@hidden>)
 >Re: Connecting Outlet on Derived Array Controller (From: Quincey Morris <email@hidden>)
 >Re: Connecting Outlet on Derived Array Controller (From: Joanna Carter <email@hidden>)

  • Prev by Date: Customize UIBarButtonItem
  • Next by Date: Re: Customize UIBarButtonItem
  • Previous by thread: Re: Connecting Outlet on Derived Array Controller
  • Next by thread: Re: Connecting Outlet on Derived Array Controller
  • Index(es):
    • Date
    • Thread