On Thu, May 15, 2008 at 10:12 PM, Rua Haszard Morris <
[EMAIL PROTECTED]> wrote:

> I'm trying to set the action for an NSSlider in a little helper class that
> is not the "file's owner" class associated with the window in the nib. At
> runtime, I get these console messages:
>
> *** +[SliderHelper myAction:]: unrecognized selector sent to class
> 0xeb74380
> HIToolbox: ignoring exception '*** +[SliderHelper myAction:]: unrecognized
> selector sent to class 0xeb74380' that raised inside Carbon event dispatch
>
> This is how I'm setting this up:
>  - there's an NSObject subclass (call it MyDialog) containing IBOutlets for
> all the controls I care about.
>  - there's another NSObject subclass (call it SliderHelper) which is
> intended to automate some behaviour common to a few controls in the dialog
> (and other dialogs in future)
>  - MyDialog instantiates a SliderHelper and passes it an NSSlider* outlet
> referring to a slider
>  - SliderHelper sets up the target and action for the slider
> programmatically in an +initWithSlider: method..
>
> +(id) initTestSlider:(NSSlider*)aSlider {
>        SliderHelper* newOne = [[SliderHelper alloc] init];
>        [newOne setSlider:aSlider];
>        [[newOne slider] setTarget:self];


-init* is always an instance method, and always called as part of a [[Foo
alloc] initBlah] pair. Above, you're passing a Class object to setTarget,
but targets must be instances - hence the "unrecognized selector" error when
you try to send the action to the target.

I would write it like this:

-(id) initWithSlider:(NSSlider*)aSlider {
    if ((self = [super init])) {
        [aSlider setTarget:self];
        [aSlider setAction:@selection(myAction:)];

        [self setSlider:aSlider];
    }
    return self;
}

You should review the Cocoa Fundamentals Guide - especially the section
about object creation:

    <
http://developer.apple.com/documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/chapter_3_section_6.html
>

sherm--

-- 
Cocoa programming in Perl: http://camelbones.sourceforge.net
_______________________________________________

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to