1

フォームとして使用しているテーブル ビューがあります。最初のセルには、編集可能なテキスト フィールドがあります。2 番目のセルをクリックすると、セミモーダルの日付ピッカーが読み込まれます。私はこれを使用しました: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にかなり慣れていないので、デリゲートの概念全体が本当に混乱しています。ありがとう!

4

1 に答える 1

0

送信された認識されないセレクターは、cancelDateEdit: セレクターに何も応答していないことを意味します。デバッガーを使用して、0xe738c00 のオブジェクトの種類を検索し、そこで適切なセレクターを探すことができます。

于 2012-09-18T15:45:23.993 に答える