Hello, Ken,

Thank you for your reply.

On 13 Jun 2012, at 10:47, Ken Thomases wrote:

> On Jun 13, 2012, at 3:40 AM, Robert Tillyard wrote:
> 
>> mind you despite window being hooked up in IB window == NULL
> 
> You need to figure this out first.  It's indicative of a deeper problem.

I've checked again and it's still NULL.

> Are you referring to the window property of a custom subclass of 
> NSWindowController?  Is this window controller being instantiated in code?  
> If so, what initializer is called?  How is that initializer implemented?  In 
> particular, I'm looking to make sure that -initWithWindowNibName: was called, 
> or, if -initWithWindowNibName:owner: was called instead that the window 
> controller passed itself as the owner (making use of that method redundant).

Window is created from a XIB using:

- (id)initWithManagedObjectContext:(NSManagedObjectContext *)inMoc
{
   if ((self = [super initWithWindowNibName:@"RunnersWindow" owner:self]))
      [self setManagedObjectContext:inMoc];
      
   return (self);
}

- (void)windowDidLoad
{
   [window setAutorecalculatesKeyViewLoop:NO];
   NSLog (@"windowDidLoad: Window = %@\n", window);
}


> In the NIB, did you set the class of File's Owner to be your window 
> controller class?  Was it File's Owner's window outlet that you hooked up?  A 
> common mistake is to actually instantiate the window controller in the NIB 
> and therefore have two window controllers.  That won't work right, obviously.

In the XIB Files Owner is set to my WindowController sub-class.

The Files Owner's window outlet says it's linked to window but I have in the 
past had problem in a different project where I had two awakeFromNibs called, I 
don't know how that happened but it seems that something I did in that project 
caused two instances of my window controller to be created.

How would I know if I've instantiated the window controller in my NIB? would I 
see two windowDidLoad messages?

> At what point did you attempt to use the window outlet?  If it was before 
> -awakeFromNib or -windowDidLoad, it would be too early.  A common mistake is 
> to attempt to reference the window during the initializer.
> 

I use the window outlet in windowDidLoad and in the method called by the 
NSControlTextDidEndEditingNotification notifications.

> 
>> I've tried hooking up the nextKeyView in IB but that doesn't help. I've also 
>> used [window setAutorecalculatesKeyViewLoop:NO]; in windowDidLoad (and in IB 
>> it's un-ticked) which doesn't help either
> 
> Did you set the initialFirstResponder outlet of the window to point to the 
> first key view in your loop?  According to the docs for -[NSWindow 
> recalculateKeyViewLoop], it is called "when [the window] is first loaded, ... 
> automatically if your window does not have a key view loop already 
> established".  I suspect that means if initialFirstResponder is not set.  So, 
> I suspect that failing to set that means that the method will blow away your 
> configuration of nextKeyView connections.

Okay, here I can see I screwed that up. I had no initialFirstResponder, now 
I've set it the tab order works perfectly.

I'd still like to fix my window == NULL problem as I would like to make the 
enter key move to the next field and skip fields if some earlier information 
means that future fields are not required.

> Regards,
> Ken

Thanks, again for taking the time to help. 

Regards, Rob.
_______________________________________________

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

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

Reply via email to