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
previous month november 2007 next month
MTWTFSS
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
Go to today