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 の質問では、メールを送信したいのにこちらが使われていたので、二重に間違っていたことになる。
関連記事
-
-
Learn iPhone and iPad Cocos2D Game Development
洋書だけれども、ApressからCocos2d を使ってゲーム開発する本として Learn iPho
-
-
[iOS] アプリ名を変更したところなぜかビルドが通らなくなり苦労した話
アプリ名にiPadと入れるとRejectされる に書いたとおり、アプリ名に iPad が入っていた
-
-
Objective-C 2.0のプロパティで再びはまる
Objective-C 2.0のプロパティに関してはまったことがあり、これはちょっと詳しく知っておく
-
-
「iPhoneの動作が遅くなる場合があります」に対応する
年末年始は休みがあるのでブログ更新頻度が高い。以前から気になっていた、LogLocationsを起動
-
-
WWDC にひとりで参加する人向け情報
WWDC 2011 に行ってきたの続編。 自費で1人で参加したのだけれども、当時あまりそういう人向
-
-
EverLearn 1.3.0 をリリースしました
EverLearn 1.3.0 をリリースしました。(2013/10/25 公開) これまでの成績
-
-
App Storeの売り上げを簡単に確認できるMacアプリAppViz
App Storeでのアプリの毎日の売り上げを確認したい場合、これまでは AppSalesを使ってい
-
-
謎のエラー iPhone/iPod Touch: application executable is missing a required architecture
リズムくん Ver.1.1の App Store への Submit の際に、謎のエラー iPhon
-
-
iPhoneアプリ おんぷちゃん開発日記 和音表示
自分の娘のために作った五線譜学習アプリ「おんぷちゃん」の開発を細々と続けている。 iPadのグランド
-
-
iOSの消音問題(iPadの本体横のスイッチの機能が設定で変更可能なためにさらにややこしいことに)
おんぷちゃん for iPad から音が出ない、というレポートが定期的に日本からも海外からも来るのだ