2011-01-10 20 views
0

Ich versuche, eine SMS-Anwendung zu implementieren. Als ich versuchte, meine SMS zu senden, bekam ich eine Ausnahme bei [self.navigationController presentModalViewController: Picker animiert: YES] ;. Ich bin sehr neu dazu. Kannst du mir bitte helfen? Mein Code ist wie folgt.Problem MFMessageComposerViewController in iPhone SDK

MFMessageComposeViewController *picker = [[MFMessageComposeViewController alloc] init]; 
picker.delegate = self; 

picker.recipients = [NSArray arrayWithObject:@"123456789"]; // your recipient number or self for testing 
picker.body = @"test from OS4"; 

[self.navigationController presentModalViewController:picker animated:YES]; 
[picker release]; 

My Protokollnachricht ist wie folgt,

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Application tried to present a nil modal view controller on target <UINavigationController: 0x5b2c120>. 

Dank im Voraus, S.

Antwort

10

Die Meldung picker Mittel nil, das heißt die MFMessageComposeViewController nicht erfolgreich erstellt wird. JA

Stellen Sie sicher, [MFMessageComposeViewController canSendText] zurückgibt, das heißt ..

if (![MFMessageComposeViewController canSendText]) { 
    // show message box for user that SMS cannot be sent 
} else { 
    MFMessageComposeViewController* picker = ...; 
    ... 
} 
+0

Danke. Jetzt weiß ich, was das Problem ist – sek

1

Drei Dinge in den Sinn kommen.

Zuerst haben Sie Ihre View-Controller-Klasse als MFMailComposeViewControllerDelegate implementiert? Und haben Sie MailComposeController definiert: didFinishWithResult: Fehler:?

Zweitens könnte man einfach haben: [self presentModalViewController: Picker animiert: YES];

Drittens, sind Sie sicher, dass der Picker nicht nil ist?

+0

Ja, ich habe delegieren und ich definiert MailComposeController: didFinishWithResult: error :. Und der Pflücker ist nil aber Wie macht man es nicht nil? – sek

+0

Sind Sie dem Rat von KennyTM gefolgt? Wenn ja, was kann + canSendText zurückgeben? – westsider

2

Wahrscheinlich Sie testen diese in Ihrem iPhone-Simulator, ist MFMessageComposeViewController nicht nil

auf einen Simulator und kehrt arbeiten
0

Der Hauptgrund, dass die modale Ansicht in der Regel eine Null Ausnahme werfen hat mit dem Gerät unter Test zu tun In den Einstellungen wurde kein E-Mail-Konto konfiguriert (daher der andere Kommentar zur modalen Ansicht im Simulator nicht funktioniert). @ KennyTM's Antwort ist ein guter Weg, damit umzugehen. Öffnen Sie einfach einen Warndialog, der den Benutzer benachrichtigt.