Subclassed control in IB uses original cell class
-
I found a neat double knobbed slider on the web:
http://developer.snowmintcs.com/controls/smdoubleslider/
There is only a IB2 palette, so I figured I'd just add a NSSlider
object to my NIB, change its class to SMDoubleClass, then do anything
further in awakeFromNib.
The problem is that the control ends up with a NSSliderCell and not a
SMDoubleSliderCell - guess +cellClass does not get invoked for
archived objects.
At first, I could not subclass the cell as a nib2.x file does not
support it. However, the IB3 docs say I can use the nib3.x file on
Tiger (for building only, not editing). So, I changed formats,
changed the cell class, and now all is working as expected.
I was wondering though - suppose I had to stay with IB2 - how would I
get the correct class of cell?
David -
On 11/28/07 3:48 PM, David Hoerl said:
> I found a neat double knobbed slider on the web:
> http://developer.snowmintcs.com/controls/smdoubleslider/
>
> There is only a IB2 palette, so I figured I'd just add a NSSlider
> object to my NIB, change its class to SMDoubleClass, then do anything
> further in awakeFromNib.
I wrote an IB3 plugin for that class, and sent it back to the author
(cc'ed). I guess he has not yet had a chance to post it on his web page.
If you're interested, write me offlist and I'll send it to you too.
--
____________________________________________________________
Sean McBride, B. Eng <sean...>
Rogue Research www.rogue-research.com
Mac Software Developer Montréal, Québec, Canada -
On Nov 28, 2007, at 12:48 PM, David Hoerl wrote:
> I found a neat double knobbed slider on the web: http://developer.snowmintcs.com/controls/smdoubleslider/
>
> There is only a IB2 palette, so I figured I'd just add a NSSlider
> object to my NIB, change its class to SMDoubleClass, then do
> anything further in awakeFromNib.
>
> The problem is that the control ends up with a NSSliderCell and not
> a SMDoubleSliderCell - guess +cellClass does not get invoked for
> archived objects.
>
> At first, I could not subclass the cell as a nib2.x file does not
> support it. However, the IB3 docs say I can use the nib3.x file on
> Tiger (for building only, not editing). So, I changed formats,
> changed the cell class, and now all is working as expected.
>
> I was wondering though - suppose I had to stay with IB2 - how would
> I get the correct class of cell?
>
Do something like this (which you probably want to do anyways, if you
create an instance of SMDoubleClass in code):
+ (void)initialize
{
if (self == [SMDoubleClass class]) {
[self setCellClass:[SMDoubleSliderCell class]];
}
}
Also, I'd recommend a better classname: SMDoubleSlider is more
descriptive :)
corbin


