难以在objective-c项目中实现委托方法

时间:2012-09-18 14:29:24

标签: objective-c ios delegates

我有一个表视图,我将其用作表单。 第一个单元格具有可编辑的文本字段。单击时,第二个单元格将加载半模式日期选择器。我用过这个:http://reednj.tumblr.com/post/1346445326/ios-semi-modal-date-picker-for-iphone

无论如何,我已经定义了我的datepicker并将其委托设置在tableviewcontroller中,如下所示:

TDDatePickerController* datePickerView = [[TDDatePickerController alloc] 
                                              initWithNibName:@"TDDatePickerController" 
                                              bundle:nil];
    [datePickerView setDelegate:self];
    [self presentSemiModalViewController:datePickerView];

现在处理按钮点击的方法定义为

-(void)datePickerSetDate:(TDDatePickerController*)viewController;
-(void)datePickerClearDate:(TDDatePickerController*)viewController;
-(void)datePickerCancel:(TDDatePickerController*)viewController;

因此,当按下取消按钮时,我希望半模式日期选择器被解雇,所以我有:

-(void)datePickerCancel:(TDDatePickerController*)viewController{
[self dismissSemiModalViewController:viewController];
}

但是这会导致应用程序因错误而崩溃

-[__NSCFType cancelDateEdit:]: unrecognized selector sent to instance 0xe738c00

2012-09-18 10:23:47.254 JRPBaseCamp [7612:f803] * 由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' - [__ NSCFType cancelDateEdit:]:发送无法识别的选择器例如0xe738c00'

所以我在TDDatePickerController中查找了cancelDateEdit方法:

-(IBAction)cancelDateEdit:(id)sender {
if([self.delegate respondsToSelector:@selector(datePickerCancel:)]) {
    [self.delegate datePickerCancel:self];
} 
}

我做错了什么?它一定是我忽略的明显的东西。非常感谢任何帮助,我对iOS很新,整个代表的概念让我很困惑。 谢谢!

1 个答案:

答案 0 :(得分:0)

发送无法识别的选择器意味着没有任何响应cancelDateEdit:selector。您可以使用调试器来搜索哪种对象是0xe738c00,然后在那里查找适当的选择器。