フォームとして使用しているテーブル ビューがあります。最初のセルには、編集可能なテキスト フィールドがあります。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にかなり慣れていないので、デリゲートの概念全体が本当に混乱しています。ありがとう!