On 2011-02-24, at 00:22 , Kyle Sluder wrote:

> On Wed, Feb 23, 2011 at 8:55 PM, Louis Demers <louisdem...@mac.com> wrote:
>> I temporarily set the File's Owner type to a NSWindowController class and 
>> connected the window to it. Got the same null value
> 
> Rather than trash at the answer, it would be more helpful to learn the
> meaning behind your actions.
> 
> If you set the File's Owner class to NSWindowController, but didn't
> change the owner you passed to -initWithWindowNibName:owner:, then of
> course it wouldn't work.

In the whirlwind of things I tried, I indeed forgot to to pass a different more 
appropriate parameter.

> The Class Identity of the File's Owner proxy
> in the nib is strictly informative; the actual class of File's Owner
> is the class of whatever you pass in as the owner.
> 
> There's very little reason to use -initWithWindowNibName:owner:. It's
> much more typical to subclass NSWindowController and use
> -initWithWindowNibName: instead.

My app architecture may be unusual. It's the first time I use windowcontrollers 
and such.

My object is already subclassing something else and forcing it to subclass at 
some point NSWindowController would be awkward.

> But if you're going to use
> -initWithWindowNibName:owner:, you'll need some outlet on the owner
> object to which you connect your window. Then you can do something
> like this:
> 
> @interface MyFilesOwner : NSObject
> @property(assign) IBOutlet NSWindow *windowOutlet; // Hooked up to window in 
> nib
> @end
> // -=-=-=-
> 
> MyFilesOwner *owner = [[MyFilesOwner alloc] init];
> NSWindowController *windowController = [[NSWindowController alloc]
> initWithWindowNibName:@"NibFile" owner:owner];
> [windowController setWindow:[owner windowOutlet]];
> 
> //END

After Stephen's initial comment, I tried this approach (although not as well 
articulated)
It did not work for a small detail: after the initWithWindowNibName call, the 
xib file may be read and processed but unless showWindow is called, the window 
still null

so the working sequence I have is:

@interface PurgeSystem : NSObject
@property(assign) IBOutlet NSWindow *window; // Hooked up to window in nib
@end

        windowControllerPurge_1 = [[NSWindowController alloc] 
initWithWindowNibName:@"PurgeSystem" owner: purgeSystem_1 ];
        [windowControllerPurge_1 showWindow:purgeSystem_1]; // Commenting this 
line causes purgeSystem_1.window to be null.
        [windowControllerPurge_1 setWindow: purgeSystem_1.window];

> 
> But again, there's rarely any reason to prefer this to than merely
> subclassing NSWindowController and letting it be the File's Owner,
> which is the default behavior when you call -initWithWindowNibName:.

Thanks for pointing me in the right direction. I'll reflect on the app's 
structure to see how to apply that approach. 


> 
> --Kyle Sluder

Louis Demers eng.
www.obzerv.com


_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to