0

SMSアプリケーションを実装しようとしています。その中で、SMSを送信しようとすると、[self.navigationController presentModalViewController:pickerアニメーション:YES];で例外が発生しました。私はこれに非常に新しいです。助けてくれませんか。私のコードは次のとおりです。

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

私のログメッセージは次のとおりです、

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

よろしくお願いします、S。

4

4 に答える 4

10

メッセージは次のことを意味します。pickerつまりnil、MFMessageComposeViewControllerが正常に作成されていません。

[MFMessageComposeViewController canSendText]YESを返すことを確認してください。

 if (![MFMessageComposeViewController canSendText]) {
    // show message box for user that SMS cannot be sent
 } else {
    MFMessageComposeViewController* picker = ...;
    ...
 } 
于 2011-01-10T17:44:11.280 に答える
2

ほとんどの場合、iPhoneシミュレーターでこれをテストしていますが、MFMessageComposeViewControllerはシミュレーターでは機能せず、nilを返します。

于 2011-08-23T13:09:29.440 に答える
1

3つのことが頭に浮かびます。

まず、ビューコントローラクラスをMFMailComposeViewControllerDelegateを実装するように宣言しましたか?そして、mailComposeController:didFinishWithResult:errorを定義しましたか?

次に、次のようにすることができます。[self presentModalViewController:pickerアニメーション:YES];

第三に、ピッカーがゼロではないことを確認しますか?

于 2011-01-10T17:53:04.243 に答える
0

モーダルビューがnil例外をスローする主な理由は、通常、設定で電子メールアカウントが構成されていないテスト対象のデバイスに関係しています(したがって、モーダルビューに関する他のコメントがシミュレーターで機能しません)。@KennyTMの答えは、これを処理するための優れた方法です。ユーザーに通知するアラートダイアログをポップアップするだけです。

于 2012-02-06T17:59:24.330 に答える