Re: windowDidLoad not getting called
Re: windowDidLoad not getting called
- Subject: Re: windowDidLoad not getting called
- From: Ken Thomases <email@hidden>
- Date: Fri, 20 Mar 2015 04:21:39 -0500
On Mar 20, 2015, at 3:54 AM, Bill Cheeseman <email@hidden> wrote:
> My launch sequence goes like this: My Info.plist file designates MainMenu as the application's principal nib file. My MainMenu nib file names NSApplication as file's owner, it contains the menu bar and my archived appDelegate object, and it connects appDelegate as NSApplication's delegate. MainMenu.xib does not contain a window object, as Ken has recommended. At launch, MainMenu is loaded as the designated principal nib file, its appDelegate archive is unarchived, and NSApplication calls appDelegate's implementation of the -applicationDidFinishLaunching: delegate method. My implementation of the delgate method then explicitly creates my window controller object and initializes it using -initWithWindowNibName:"MainWindow". This is what loads my MainWindow nib file and calls its -windowDidLoad method.
Nope. That's not enough. A window controller does not load the NIB (nor call -windowDidLoad) just because it's been allocated and initialized with a NIB name. Something has to be requesting the window.
Again, I ask you to read the docs for NSWindowController, in particular the -window method, and reconcile that with how you think it works. If just initializing the window controller with a NIB name was sufficient to load it, why would that start with "If the window has not yet been loaded, this method attempts to load the window’s nib…"?
> When the nib file loads, somebody notices that MainWindow.xib's Visible at Launch setting is set, so it immediately shows the window. My code requires no explicit reference to the window property and no call to -showWindow or -makeKeyAndOrderFront: to make the window appear.
It must.
> The Visible at Launch setting in the MainWindow nib file is sufficient by itself, which is the only point I was trying to make.
Visible at Launch is sufficient to make the window show once the NIB has been loaded, but you're missing something that is loading the NIB.
Put a breakpoint in -windowDidLoad and look at the stack trace. Or log [NSThread callStackSymbols] in -windowDidLoad. You'll find what's doing it.
Regards,
Ken
_______________________________________________
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