iPadがクラッシュしたため、私のiPhoneアプリはTestFlightで拒否されました。問題のコードは、電子メールを送信するためのコントローラを表示しようとしています。presentViewControllerがiPadではクラッシュしますが、iPhoneではクラッシュしません
- (void)viewDidLoad {
[super viewDidLoad];
[self displayComposerSheet];
}
-(void)displayComposerSheet {
// Create e-mail interface
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
picker.mailComposeDelegate = self;
[picker setSubject:@"iPad crash test"];
// Add recipients
NSArray *toRecipients = [NSArray arrayWithObject:@"[email protected]"];
[picker setToRecipients:toRecipients];
// Fill body
NSString *emailBody = @"A short test of iPad crashes";
[picker setMessageBody:emailBody isHTML:NO];
// Show interface - iPad crashes here but iPhone is ok
[self presentViewController:picker animated:YES completion:nil];
}
エラーメッセージは次のとおりです:
私は、iOS 9.3.1実行している私のiPhone 5cの上で期待通りに動作しますが、私のiPad 2を実行しているのiOS 9.3.1クラッシュ小さな、簡単な例にコードを削減しました***キャッチされていない例外 'NSInvalidArgumentException'が原因でアプリケーションを終了しています。理由: 'アプリケーションがターゲットにnilモーダルビューコントローラを表示しようとしました。'
私はこれを理解するのに少し時間を費やしましたが、それを解決できませんでした。どんなアイデアや提案も大歓迎です!
'picker'は' nil'ですか? 'MFMailComposeViewController'のドキュメントを読んでください。このクラスを使用する前に、デバイスが電子メールを送信できるかどうかを確認する必要があります。 – rmaddy