Я пытаюсь разработать элемент управления, имитирующий поведение элемента управления 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
Как я могу это исправить? Большое спасибо.
if (delegate && [delegate respondsToSelector:@selector(foo:)]) { [delegate performSelector:@selector(foo:) withObject:bar]; ]
- person Cyrille   schedule 07.09.2012