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
これを修正するにはどうすればよいですか? どうもありがとう。