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 の質問では、メールを送信したいのにこちらが使われていたので、二重に間違っていたことになる。
関連記事
-
iPad Pro 2017 12.9inch購入
新型コロナウィルスの影響でリモートワークの機会が増えているため、リモートワークをサポートす
-
Apple Developer Program 更新 2020
毎年行うが1年ごとなのでいつも前年の作業を忘れてしまう。 振り返ってみたところ2009年から
-
Apple Special Event 2017
2017年は仕事で死んでいたので、Special Eventの記事を書けていなかった。記録
-
Apple Special Event 2014
https://japanese.engadget.com/2014/09/09/9-9/
-
iPhoneアプリにAboutBoxを実装
iPhoneアプリにAboutBoxを実装するためのメモ。 今回、自分のiPhoneアプリにAbou
-
iPhone SDK 3.0 beta 4
iPhone プログラミング記さんによると、 iPhone SDK 3.0 beta 4 になってよ
-
[iPhone 開発本] iPhoneのオモチャ箱 でしばらく遊べそう
cocos2d/Box2Dを調べたいと思っていたら丁度発売されたので買ってみた。 実際にcocos2
-
iOSアプリの Ad Hoc 配布の悪夢から解放される TestFlight
面倒だった Adhoc 版のやりとりを格段に楽にしてくれる TestFlight | つくる社LL
-
[iOS][SDK]UIImageをファイルとして保存したい
オンデバイスで学習を行ったときに、将来使えるように UIImage も画像ファイルとして保存してお