ユーティリティアプリを持っています。このチュートリアルのように、フィードバックビューを呼び出してメールを送信する裏側にこのコードを実装しました。これは機能しますが、[フィードバックの送信] UIButtonをクリックすると、アプリがすぐにクラッシュします。*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIViewController sendMail]: unrecognized selector sent to instance 0x89c1960'.
私はこれらのことをチェックしました:
デリゲートを適切に宣言し、MailComposerに実装しました。
私のメソッドsendMailは、ボタンのTouchUpイベントに接続されています。
私のメソッド名は同意します:
- (IBAction)sendMail;
と
- (IBAction)sendMail
{
if ([MFMailComposeViewController canSendMail])
{
MFMailComposeViewController *mfViewController = [[MFMailComposeViewController alloc] init];
mfViewController.mailComposeDelegate = self;
[self presentModalViewController:mfViewController animated:YES];
}
else
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Status:" message:@"Your phone is not currently configured to send mail." delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil];
[alert show];
}
}
メソッド実装の先頭にブレークポイントが設定されているが呼び出されないため、コードはこのメソッドにイベントで到達しません。また、ViewDidLoadのブレークポイントがアクティブ化されませんでした。
このエラーを詳しく見てみましょう。
reason: '-[UIViewController sendMail]: unrecognized selector sent to instance
メソッドではなく、sendMailという名前のビューコントローラーを期待しているようです。非常によく似ているように見えるこの投稿を読みましたが、xibIdentityドロップダウンリストに他のビューコントローラー名が表示されません。これは私の問題の一部だと思いますが、修正方法がわかりません。
たぶん私はビューコントローラーを介してMFMailComposerを提示することになっていますか?もしそうなら、私はそれを行う方法がわかりません。
任意の提案をいただければ幸いです。