1

メールボタンをクリックすると、アプリケーションにMFMailComposeViewControllerを実装しています。私は以下のエラーを受け取ります。アプリケーションがiOS 10のターゲットにnilモーダルビューコントローラを表示しようとしましたか?

は、アプリケーションがターゲット強いテキスト

にはnilモーダルビューコントローラを提示しようとした。ここに私のコードです:

NSString *iOSVersion = [[UIDevice currentDevice] systemVersion]; 
    NSString * version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"]; 

    NSString * build = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"]; 

    mailComposer = [[MFMailComposeViewController alloc]init]; 
    mailComposer.navigationBar.tintColor = [UIColor blackColor]; 
    [mailComposer.navigationBar setTitleTextAttributes: 
    @{NSForegroundColorAttributeName:[UIColor blackColor]}]; 
    mailComposer.mailComposeDelegate = self; 

    [mailComposer setSubject:@"Co - Contact Us"]; 

    [mailComposer setToRecipients:@[@"[email protected]"]]; 
    NSString *supportText = @"Enter your comment here:\n\n\n\n\n"; 
    supportText = [supportText stringByAppendingString:[NSString stringWithFormat:@"iOS Version: %@\nCorner Version:%@\nBuild:%@\n\n",iOSVersion,version, build]]; 
    [mailComposer setMessageBody:supportText isHTML:NO]; 

    [self presentViewController:mailComposer animated:YES completion:nil]; 

私のコードで間違って何。助けてください

答えて

2

デバイスがメールを設定していないか、シミュレータを使用しているとクラッシュまたは例外が発生する可能性があります。

mailComposer = [[MFMailComposeViewController alloc] init]; 

上記のコード行は問題を引き起こす可能性があります。シミュレータの初期化メソッドでNULLまたはnilを返す可能性があります。 、

はMFMailcomposerViewControllerため
NSString *iOSVersion = [[UIDevice currentDevice] systemVersion]; 
    NSString * version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"]; 

    NSString * build = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"]; 

    mailComposer = [[MFMailComposeViewController alloc]init]; 

    if ([MFMailComposeViewController canSendMail] && mailComposer) { 

     mailComposer.navigationBar.tintColor = [UIColor blackColor]; 
     [mailComposer.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor blackColor]}]; 
     mailComposer.mailComposeDelegate = self; 

     [mailComposer setSubject:@"Corner - Contact Us"]; 

     [mailComposer setToRecipients:@[@"[email protected]"]]; 
     NSString *supportText = @"Enter your comment here:\n\n\n\n\n"; 
     supportText = [supportText stringByAppendingString:[NSString stringWithFormat:@"iOS Version: %@\nCorner Version:%@\nBuild:%@\n\n",iOSVersion,version, build]]; 
     [mailComposer setMessageBody:supportText isHTML:NO]; 

     [self presentViewController:mailComposer animated:YES completion:nil]; 
} 
+0

@visibleインタフェースは、セレクタ私が編集した答えを試してみてください。このエラー –

+0

を取得しています 'canSendMail' を宣言し 、

同様:

ので、ちょうどモーダルのViewControllerを提示する前にcanSendMailをチェック@ User558 –

+0

私は試してみましたが、IFループに入っていません –

関連する問題