所以,我正在尝试以编程方式将事件处理程序附加到我在iphone应用程序上使用的小部件:
addTarget:action:forControlEvents
我在Interface Builder中添加了一个UISegmentedControl,它通过@property seg
公开,在loadView中,我有:
- (void)loadView { [ super loadView ] ; //k after that attach our own event handlers [ seg addTarget:seg action:@selector(sliderEventIB) forControlEvents:UIControlEventAllEvents ]; }
sliderEventIB,只是告诉我们感觉事件:
-(IBAction)sliderEventIB:(id)sender forEvent:(UIEvent*)event { puts( "I feel you joanna" ) ; }
但我得到的错误是
ViewControllersTest[6744:207] *** -[UISegmentedControl sliderEventIB]: unrecognized selector sent to instance 0x3b21b30
知道这里不的内容是什么?
答案 0 :(得分:2)
好像你忘了在addTarget中插入冒号:
[ seg addTarget:seg action:@selector(sliderEventIB:) forControlEvents:UIControlEventAllEvents ];
应该是sliderEventIB:不是sliderEventIB。
答案 1 :(得分:1)
正确的代码如下:
- (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");
}
请注意,该方法与使用addTarget:action:forControlEvents
注册的选择器相同。
答案 2 :(得分:0)
好吧,UISegmentedControl没有'sliderEventIB'方法。
该方法的'addTarget'部分询问:“一旦发生事件,我该通知谁?”。在这种情况下,您指定应通知UISegmentedControl,并应在该对象上调用sliderEventIB。相反,你应该说
[seg addTarget:self action:@selector(sliderEventIB) forControlEvents: UIControlEventAllEvents]