2013-10-08 8 views
23

Pracuję nad aplikacją, wymaganiem jest otwarcie programu do tworzenia wiadomości e-mail po kliknięciu przycisku UIAlertView.ios: Aplikacja próbowała przedstawić zerowy kontroler widoku modalnego na celu

wiadomość, która znajduje się w treści wiadomości e-mail jest kopiowana z UITextView. Używam kodu następujące snipt:

-(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]; 
} 

ale problem jest to, że otrzymuję błąd mówiąc Aplikacja próbowała przedstawić nil kontroler modalne widok na tarczy. jak możemy otworzyć domyślnego program do tworzenia poczty w ios 7?

Odpowiedz

63

Według Apple, należy sprawdzić, MFMailComposeViewController są w stanie wysyłać pocztę tuż przed wysłaniem

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]; 
} 

Ref: Apple Dev url


+0

Kamienie mechanizmu strażniczego! – Naeem

+0

, ale dlaczego komunikat tekstowy (MFMessageComposeViewController) nie wymaga tego sprawdzenia? Mam urządzenie testujące, które nie ma karty SIM, technicznie nie powinno być w stanie wysyłać tekstu, ale działa dobrze (bez wyjątku) bez sprawdzenia ... dlaczego? dzięki. – RainCast

+0

Tak więc, nie ma już potrzeby testowania interfejsu użytkownika wysyłania poczty na symulatorze ...? –

8
konfiguracja konta

Forgetting Poczta w ustawieniach może również urządzenia doprowadzić do tego błędu. Sprawdź ponownie, czy konto pocztowe jest skonfigurowane na Twoim urządzeniu, czy nie.

Powiązane problemy