On 2013/08/15, at 15:08, Chris Hanson <c...@me.com> wrote:
> On Aug 13, 2013, at 11:34 AM, Izak van Langevelde <eezac...@xs4all.nl> wrote: > >> A user interface contains several instances of a specific form, which is >> easily created in Interface Builder. >> Is there any way to derive a subclass of NSView from this form, so that it >> can be reused? > > A good way to do this is to create a xib that has an NSView with your form > all laid out. Then use the Inspector to set File’s Owner’s class to > NSViewController; File’s Owner will get a “view” outlet as a result of that. > Then just connect that “view” outlet to your view. > > That will get you a reusable NSViewController you can instantiate using > -[NSViewController initWithNibName:bundle:] any number of times in your > application, and you can thus substitute its view into your app at any place > you like. > > You could also create an NSView subclass, call it a “ViewControllerHostView,” > that knows how to embed a view controller’s view within itself based on a > User Defined Runtime Attribute you set up in Interface Builder.[1] > > That way your ViewControllerHostView can have a controllerNibName property > that gets set when it’s instantiated at load time; it can then, when it’s > actually being presented, also load the view controller from the named nib > and embed its view within itself. > > -- Chris > > [1] User Defined Runtime Attributes are values set in Interface Builder that > then get set on your objects via KVC when a nib file is loaded. They work in > OS X 10.6 and iOS 5 Wow. That sounds like a *really* powerful workflow. Are there any good example code downloads or tutorials that illustrate this well? _______________________________________________ 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