views:

80

answers:

1

Apologies if this has been asked before. I searched and couldn't find it.

In my application I have about 10 nib files, most of which hold a single significant view object and a number of subviews/controls.

At what point would you consider breaking nibs into pieces? For example in one of my nibs I have an NSCollectionview and the prototype view (relatively simple) in the same nib. Would you put the prototype view in a separate nib?

To me there is a clear tradeoff. If you subdivide too much then you lose many of the advantages of Interface builder (arranging things geometrically, setting resize masks etc), and you need to write more code to ensure pieces of views are arranged properly. On the other hand if you put everything into one nib ... well .. we all know that is a refactoring nightmare, slow loading etc.

So how do you decide when to draw this line? Looking at my own code I think I've used the following;

(a) Always split pieces that don't always need to load together

(b) Never put more than one relatively complex control (eg NSTableview, NSCollectionview etc) in a nib

Edit: -- I should say that I sometimes break these rules. For example I have a window for configuring a certain type of object. It has a complete Master-detail interface with an NSTableview (master) and a bunch of text fields (detail). I guess this violates my one complex view per nib rule.

What rules do you use?

+1  A: 

Best practices are always a matter of opinion, at least in part. However, I think you're on the right track with your thinking. I like to think about my NIB files in terms of the File's Owner -- the controller that manages the contents of that NIB.

If, for example, you're using an NSViewController architecture, it makes perfect sense to have one NIB per view. If you're not, it might be a little bit harder to see the advantages of loading multiple NIBs that all share the same owner.

Your example of an NSCollectionView whose prototype view coexists in the same NIB file is a good example of what does belong in a NIB together. If I were you, I wouldn't break it down any more than that.

Alex
I like that. I guess that it should be obvious what file's owner should be (ie one top level view). If it isn't then it probably needs refactoring. I've edited my question to include a more difficult example
Ira Cooke