Skip navigation.
 
mlRe: how to manage multiple non-document windows
FROM : Steve Christensen
DATE : Fri Apr 25 21:06:19 2008

On Apr 24, 2008, at 5:01 PM, Ken Thomases wrote:

> On Apr 24, 2008, at 6:39 PM, Steve Christensen wrote:

>> I'm rewriting an old legacy app in Cocoa and have run into a 
>> stumbling block. The app is supposed to support having multiple 
>> windows open, but the window content is unrelated to the concept 
>> of a document - which is the "normal" multiple window model. 
>> Instead the windows provide a UI to perform specific calculations, 
>> among other things. An example of what I'm looking for would be if 
>> you had a version of the Calculator application where you could 
>> create multiple calculator windows so you could leave several 
>> calculations "open" simultaneously, if that makes sense.
>>
>> When I start up the app, an instance of the window is created, but 
>> I can't figure out how to get it to repeat the process in response 
>> to selecting New from the File menu. I've found a bunch of info on 
>> multiple document windows, or a single non-doc window plus a 
>> preferences window, but nothing on instantiating multiple non-
>> document windows. Did I just miss something basic, or is all of 
>> the magic really focused on NSDocumentController, etc.?

>
> If you're going to instantiating a window from a nib multiple 
> times, it should generally be in the nib by itself.  Well, the nib 
> can have other objects which accompany the window, like 
> NSController subclasses.
>
> Then, you load the nib once for each window that you need to 
> instantiate.
>
> It's quite helpful to use NSWindowController (or custom subclass) 
> objects to manage each nib, its loading, and the resulting window. 
> Typically, the NSWindowController is not contained in the nib. 
> Rather it is instantiated to manage the loading of the nib from the 
> outside.  It is often the File's Owner of the nib.


I put both the window and NSWindowController subclass in MainMenu.nib 
since some of the menu items control behavior in the window (and some 
of the window's current state is reflected in the menus. So I 
wouldn't think that you'd want to reload the nib for that case, right?

I've tried using -[NSWindowController initWithWindowNibName:owner:] 
to create a new controller instance (in response to File>New), 
figuring that it'd drag the associated window along, but the 
controller's _window ivar is nil, so obviously that's not working. Is 
it just going to be easier for me to go the NSDocument, etc., route 
and say that I have a "document" that I'm going to "load" (wink, 
wink) in order to better fit within what appears to be the expected 
multiple window model?

I also just noticed that when I close one of these windows 
(configured with "release on close"), the controller still hangs 
around, but that's another issue...

Related mailsAuthorDate
mlhow to manage multiple non-document windows Steve Christensen Apr 25, 01:39
mlRe: how to manage multiple non-document windows Ken Thomases Apr 25, 02:01
mlRe: how to manage multiple non-document windows Steve Christensen Apr 25, 21:06
mlRe: how to manage multiple non-document windows Jean-Daniel Dupas Apr 25, 21:32
mlRe: how to manage multiple non-document windows Steve Christensen Apr 26, 01:44
mlRe: how to manage multiple non-document windows Jean-Daniel Dupas Apr 26, 02:51
mlRe: how to manage multiple non-document windows Steve Christensen Apr 26, 05:27