Re: setting target and action for a NSSlider programmatically in a class that is not "file's owner" - how?
Re: setting target and action for a NSSlider programmatically in a class that is not "file's owner" - how?
- Subject: Re: setting target and action for a NSSlider programmatically in a class that is not "file's owner" - how?
- From: "Sherm Pendley" <email@hidden>
- Date: Thu, 15 May 2008 22:38:12 -0400
On Thu, May 15, 2008 at 10:12 PM, Rua Haszard Morris <
email@hidden> 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 (email@hidden)
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:
This email sent to email@hidden