2011-01-10 99 views
0

我想實現一個SMS應用程序。在那個時候,當我試圖發送我的短信時,我在[self.navigationController presentModalViewController:picker animated:YES];中得到了一個異常。我對此很新。你們能幫我嗎?我的代碼如下。問題iPhone中的MFMessageComposerViewController 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]; 

我的日誌消息如下所示,

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

由於提前, S.

回答

10

該消息表示pickernil,即沒有被成功地創建的MFMessageComposeViewController。

確保[MFMessageComposeViewController canSendText];是的,即..

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

謝謝。現在我知道什麼是問題 – sek 2011-01-10 18:06:32

1

三件事情浮現在腦海中。

首先,你有沒有聲明你的視圖控制器類是實現MFMailComposeViewControllerDelegate?你有沒有定義mailComposeController:didFinishWithResult:錯誤:?其次,你可以只有:[self presentModalViewController:picker animated:YES];

三,你確定picker不是零嗎?

+0

是的我有委託,我定義了mailComposeController:didFinishWithResult:error :. 而選取器是零,但如何使它不零? – sek 2011-01-10 18:00:34

2

最大的可能是你在你的iPhone模擬器測試此,MFMessageComposeViewController不會在模擬器上,並返回零

0

的主要原因合作的模式視圖將拋出無異常通常有被測設備做沒有在設置中配置電子郵件帳戶(因此有關模態視圖的其他評論在模擬器中不起作用)。 @ KennyTM的答案是處理這個問題的好方法。只需彈出警告對話框通知用戶。