开发者

Programmatically attaching event handlers

So, I'm trying to programmatically attach event handlers to widgets I've placed on my iphone application using:

addTarget:action:forControlEvents

I have added a UISegmentedControl in Interface Builder which is exposed through @property seg and in loadView, I have:

- (开发者_如何学Govoid)loadView
{
  [ super loadView ] ;

  //k after that attach our own event handlers
  [ seg addTarget:seg action:@selector(sliderEventIB) forControlEvents:UIControlEventAllEvents ];
}

sliderEventIB, just tells us it feels the event:

-(IBAction)sliderEventIB:(id)sender forEvent:(UIEvent*)event
{
  puts( "I feel you joanna" ) ;
}

but the error I'm getting is

ViewControllersTest[6744:207] *** -[UISegmentedControl sliderEventIB]:
unrecognized selector sent to instance 0x3b21b30

Any idea what it doesn't like here?


It seems like you just forgot to insert the colon in addTarget:

[ seg addTarget:seg action:@selector(sliderEventIB:) forControlEvents:UIControlEventAllEvents ];

It should be sliderEventIB: not sliderEventIB.


The proper code is as such:

- (void)loadView
{
    [super loadView];
    [seg addTarget:self action:@selector(sliderEventIB:forEvent:) forControlEvents:UIControlEventAllEvents];
}
- (IBAction)sliderEventIB:(id)sender forEvent:(UIEvent*)event
{
    NSLog(@"I feel you joanna");
}

Notice that the method has the same selector as is registered using addTarget:action:forControlEvents.


Well, the UISegmentedControl doesn't have the 'sliderEventIB' method.

The 'addTarget' section of the method asks: "who do I inform once an event occurs?". In this case, you specified that the UISegmentedControl should be informed and it should call sliderEventIB on that object. Instead, you should say

[seg addTarget:self action:@selector(sliderEventIB) forControlEvents: UIControlEventAllEvents]

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜