Application tried to present a nil modal view controller on target 問題
MFMailComposeViewController を使ってメール送信ダイアログを表示しようとしたところ、Application tried to present a nil modal view controller on target が発生してアプリが強制終了されてしまう問題に遭遇。
に書いてあるとおり、MFMailComposeViewController の canSendMail を使って、端末からメールを送れる状態であるかを確認する必要がある。
テスト用端末や Simulator だとメールの設定をしていないことも多いと思うので、遭遇することがありそうだ。
Class mailClass = (NSClassFromString(@"MFMailComposeViewController")); if (mailClass != nil) { MFMailComposeViewController * mailView = [[MFMailComposeViewController alloc] init]; mailView.mailComposeDelegate = self; //Set the subject [mailView setSubject:emailSubject]; //Set the mail body [mailView setMessageBody:emailBody isHTML:YES]; //Display Email Composer if([mailClass canSendMail]) { [self.navControl presentModalViewController:mailView animated:YES]; } }
ちなみに、メールを送信できない環境である場合自動的にダイアログが表示される。
さらにちなみに、SMSを送りたい場合は MFMessageComposeViewController を使い、その場合送信可能かどうかは canSendText を使うとのこと。
上記のStack Overflow の質問では、メールを送信したいのにこちらが使われていたので、二重に間違っていたことになる。
関連記事
-
Roland 電子ドラム TD-4KP 落札
(2016年2月の記事)ドラム譜学習アプリを作るためには自分も叩けないと困るだろう、ということでMI
-
iPhoneアプリ おんぷちゃん開発日記 iPad版をアップデート
iPhoneアプリサポートページ の方に書きましたが、4月30日にようやくiPad用のアップデート版
-
オライリーのiPhoneゲーム開発本 iPhone Game Development (洋書)
このiPhone Game Developmentは話題になっていることをみたことがないし、日本のA
-
ゲームデザイン脳 のiPhoneアプリ版
ゲームデザイン脳のiPhoneアプリ版が出たらしい。 無料で、しかも書き下ろしもある模様。 本の購入
-
[iPhone SDK] 処理を遅延実行する方法
処理を少し遅らせて実行したいときがたまにある。 そういうときには、NSObjectの - (voi
-
Invalid Signature で App Store に Submit できず
無料版と有料版を同じソースからビルドできるようにしようと思いいろいろ試行錯誤を続けている。 ついにビ
-
[iOS] アプリ名を変更したところなぜかビルドが通らなくなり苦労した話
アプリ名にiPadと入れるとRejectされる に書いたとおり、アプリ名に iPad が入っていた
-
Apple Event Sep 2021
ついに後数時間で Apple Event 2021.09.15 がある。 今年は何かサプライ
-
iOS8 文字入力に時間がかかる問題ようやく解決
iPhone6 Plus に機種変更してからずっと苦しめられていたのが文字入力時に時間がかか
-
[買ってみた] 新しいAirPods
2019年3月20日に突如発表された、新しい AirPods を買ってみた。 新型「