FROM : Rick Mann
DATE : Thu Nov 22 22:32:37 2007
On Nov 22, 2007, at 1:16 PM, Jonathan Hess wrote:
> In Interface Builder you can specify that any instance can be of a
> different more derived type at runtime. To do this use the identity
> inspector (command + 6) and use the custom class combo box to type
> in a new class name. At runtime, an instance of that class will be
> instantiated in place of the selected object.
>
> So, if you subclassed NSView, drag an NSCustomView to your document.
> If you subclassed something more specific like an NSButton, drag an
> NSButton to your document. Once you've done that select the instance
> and use the identity inspector to change the class to your custom
> subclass. When you load your nib at runtime an instance of your
> custom class will be instantiated instead of the button.
Thanks.
So, that's the second technique described by "View Programming Guide
for Cocoa." It says:
> The second technique is to specify a custom class is used when your
> custom view subclass inherits
> from a view that Interface Builder provides support for directly.
> For example, you can create an
> NSScrollView instance in Interface Builder and specify that a custom
> subclass (MyScrollView) should
> be used instead, again using the inspector. In this case, when the
> nib file is loaded by the application,
> the view instance has already been created and the MyScrollView
> implementation of initWithFrame:
> is never called. The MyScrollView instance receives an awakeFromNib
> message and can configure
> itself accordingly.
The problem here is that, I don't see how my initWithFrame: could ever
get called. IB needs to call that before archiving the view, and it
doesn't have the ability to call it.
Even if I had a custom palette for it, I don't see how it could call
it, but the phrase "If you have not created an Interface Builder
palette" implies that there is a way to create a palette.
--
Rick
DATE : Thu Nov 22 22:32:37 2007
On Nov 22, 2007, at 1:16 PM, Jonathan Hess wrote:
> In Interface Builder you can specify that any instance can be of a
> different more derived type at runtime. To do this use the identity
> inspector (command + 6) and use the custom class combo box to type
> in a new class name. At runtime, an instance of that class will be
> instantiated in place of the selected object.
>
> So, if you subclassed NSView, drag an NSCustomView to your document.
> If you subclassed something more specific like an NSButton, drag an
> NSButton to your document. Once you've done that select the instance
> and use the identity inspector to change the class to your custom
> subclass. When you load your nib at runtime an instance of your
> custom class will be instantiated instead of the button.
Thanks.
So, that's the second technique described by "View Programming Guide
for Cocoa." It says:
> The second technique is to specify a custom class is used when your
> custom view subclass inherits
> from a view that Interface Builder provides support for directly.
> For example, you can create an
> NSScrollView instance in Interface Builder and specify that a custom
> subclass (MyScrollView) should
> be used instead, again using the inspector. In this case, when the
> nib file is loaded by the application,
> the view instance has already been created and the MyScrollView
> implementation of initWithFrame:
> is never called. The MyScrollView instance receives an awakeFromNib
> message and can configure
> itself accordingly.
The problem here is that, I don't see how my initWithFrame: could ever
get called. IB needs to call that before archiving the view, and it
doesn't have the ability to call it.
Even if I had a custom palette for it, I don't see how it could call
it, but the phrase "If you have not created an Interface Builder
palette" implies that there is a way to create a palette.
--
Rick
| Related mails | Author | Date |
|---|---|---|
| Rick Mann | Nov 22, 20:25 | |
| Jonathan Hess | Nov 22, 22:16 | |
| Rick Mann | Nov 22, 22:32 | |
| Ricky Sharp | Nov 23, 04:04 | |
| Jon Hess | Nov 23, 08:05 |






Cocoa mail archive

