2013-10-08 9 views
23

Sto sviluppando un'applicazione, l'esigenza è di aprire il compositore di posta elettronica con un clic di UIAlertView.ios: Applicazione tentata di presentare un controller di visualizzazione modale nil sul target

il messaggio che si trova nel corpo del messaggio dell'e-mail viene copiato da UITextView. Sto usando il codice seguente Questo esempio vi:

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ 
if (buttonIndex == 0) 
    { 
     // opening message composer 
    } 
else 
    { 
    MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init]; 
    picker.mailComposeDelegate = self; 
    [picker setSubject:@"Test mail"]; 
    [picker setMessageBody:messageBody.text isHTML:YES]; 
    [self presentViewController:picker animated:YES completion:NULL]; 
    } 
} 
// mail compose delegate 
- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error 
{ 
     [self dismissViewControllerAnimated:YES completion:NULL]; 
} 

ma il problema è che sto ottenendo l'errore dicendo Applicazione cercato di presentare un controller di vista modale nullo sul bersaglio. come possiamo aprire il compositore di posta predefinito in iOS 7?

risposta

63

Come per Apple, si dovrebbe verificare è MFMailComposeViewController sono in grado di inviare la posta appena prima di inviare

MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init]; 
if ([MFMailComposeViewController canSendMail]) { 
    picker.mailComposeDelegate = self; 
    [picker setSubject:@"Test mail"]; 
    [picker setMessageBody:messageBody.text isHTML:YES]; 
    [self presentViewController:picker animated:YES completion:NULL]; 
} 

Rif: Apple Dev url


+0

Il meccanismo di protezione oscilla! – Naeem

+0

ma perché il messaggio di testo (MFMessageComposeViewController) non ha bisogno di questo controllo? Ho un dispositivo di test che non ha la scheda SIM, tecnicamente non dovrebbe essere in grado di inviare del testo, ma funziona bene (senza eccezione lanciata) senza il controllo ... perché? Grazie. – RainCast

+0

Quindi, non testare più l'interfaccia utente della posta inviata sul simulatore ...? –

8
configurazione dell'account

Forgetting posta nelle impostazioni del dispositivo può anche portare a questo errore. Ricontrolla se un account di posta elettronica è configurato sul tuo dispositivo o meno.

Problemi correlati