> You never want a NIB for the window controller that's separate from the NIB 
> containing the window.  You want a single NIB for the window which the window 
> controller will load and be the owner of.  The NIB will *not* "contain" the 
> window controller.  The File's Owner placeholder in the NIB represents the 
> window controller, but the window controller will be created before the NIB 
> is loaded and will, in fact, be the thing which loads the NIB.

This is what I don’t get! If I have:

LTWViewController.h and LTWViewController.m, and LTWWindow.xib, then set the 
file owner in the NIB to “LTWViewController”, how do I then wire up outlets, 
bindings and actions so that I get properties set in LTWViewController?

I can see I could do it if I had LTWViewController.xib that included an 
NSWindow?

Thanks a lot.

Cheers
Dave

> On 16 Feb 2015, at 16:46, Ken Thomases <k...@codeweavers.com> wrote:
> 
> On Feb 16, 2015, at 9:24 AM, Dave <d...@looktowindward.com> wrote:
> 
>>> I recommend that you follow the advice in this article: 
>>> <https://www.mikeash.com/pyblog/friday-qa-2013-04-05-windows-and-window-controllers.html>.
>> 
>> Thanks for this, it seems to be saying there is no need for a separate 
>> Window Subclass and that the Window Controller Subclass contains all the 
>> code needed to drive the window.
> 
> It's relatively rare to need to subclass NSWindow.  Usually, you can achieve 
> whatever behavior you need with a standard NSWindow or NSPanel and the 
> window's delegate.
> 
> You typically want a custom subclass of NSWindowController to be responsible 
> for the window (and the memory management of the top-level objects in the 
> window NIB).
> 
> It's convenient and common for the window controller to also be the window's 
> delegate.
> 
> 
>> I’m a bit confused of when to use an NSWindow and when to use and 
>> NSWindowController? 
> 
> Well, NSWindow is an actual GUI object.  If you don't have a window, then 
> there's nothing for the user to see or interact with.  NSWindowController is, 
> as its name implies, a controller.  You typically use both.  The window 
> controller creates and controls the window.
> 
> 
>> The way I had thought to do this was to have:
>> 
>> LTWMainWindowController.h, .m and .xib files and LTWMainWindow.h, .m and 
>> .xib files.
> 
> You never want a NIB for the window controller that's separate from the NIB 
> containing the window.  You want a single NIB for the window which the window 
> controller will load and be the owner of.  The NIB will *not* "contain" the 
> window controller.  The File's Owner placeholder in the NIB represents the 
> window controller, but the window controller will be created before the NIB 
> is loaded and will, in fact, be the thing which loads the NIB.
> 
>> Is this the best approach? Or it is better to put the code in the 
>> LTWMainWindow.h, .m and .xib files directly into LTWMainWindowController? 
> 
> It makes no sense to discuss where some unspecified code goes until you know 
> what the code is for.  As I say, usually there's no need to subclass 
> NSWindow.  You would have a custom window controller class and a NIB that 
> encodes the state of the window and at least some of its views.  The NIB 
> might also encode some auxiliary controller objects, like an array controller.
> 
> You would only create a custom subclass of NSWindow if the normal mechanisms 
> (window controller, window delegate) don't meet your needs.  Don't do it 
> preemptively.
> 
> 
>> Or instead of using NSWindowController  and NSWindow should I be using 
>> NSWindowController and NSViewController?
> 
> Well, there will always be a window or otherwise there's nothing for the 
> window controller to control and nothing to contain any views that might be 
> controlled by any view controllers.
> 
> You may find it convenient to organize your project with view controllers for 
> some important views within your window, but that sort of depends on how 
> complex your window and its view hierarchy are, and whether you'll be 
> swapping views in and out or reusing views in multiple contexts.  Again, it 
> doesn't make sense to pick a design architecture in the abstract.  You design 
> the architecture based on the specifics of your app.
> 
> 
>> I’m really confused how to lay this out and want to start off on the right 
>> foot.
> 
> For starters, just follow the advice in that article.  Create a custom 
> subclass of NSWindowController.  Create the NIB to encode the window's 
> configuration and view hierarchy.  Don't go more complicated than that — 
> custom window classes, separate view NIB with view controllers — until you 
> need to.
> 
> Regards,
> Ken
> 


_______________________________________________

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