我正在尝试开发一个模仿 UITableView 控件行为的控件。我已经定义了一个委托协议如下:
@protocol HPSChoiceDelegate
- (void)choiceView:(HPSChoice *)choiceView didSelectChoice:(NSNumber*)selectedIndex;
@end
用户可以在主控制视图中点击子视图。我有 TapGesture 识别器在主控制视图中触发方法。我把这些连接起来是这样的:
UITapGestureRecognizer *containerTap =
[[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(didSelectChoice:)];
然后我在视图中有一个方法,它试图在委托中调用正确的方法。视图中的方法如下所示:
-(void)didSelectChoice:(UITapGestureRecognizer*)sender
{
NSNumber* selectedIndex = [NSNumber numberWithInt:sender.view.tag];
[(id)self.delegate performSelector:@selector(didSelectChoice:) withObject:selectedIndex afterDelay:0.0f];
}
在委托控制器中,我定义了以下方法:
- (void)choiceView:(HPSChoice *)choiceView didSelectChoice:(NSNumber*)selectedChoice
{
NSLog(@"HPSFormController didSelectChoice:(HPSChoice*)choiceView tag = %@",[[choiceView class] description]);
}
这一切都会编译,当我点击控件时,会在视图中调用 didSelectChoice,然后调用委托中的方法。但是,委托方法崩溃并出现以下错误:
-[HPSFormController didSelectChoice:]: unrecognized selector sent to instance 0x29b4e0
我该如何解决?非常感谢。