2011-01-10 4 views
0

SMS 응용 프로그램을 구현하려고합니다. 그 때 내 SMS를 보내려고하면 [self.navigationController presentModalViewController : picker animated : YES];에서 예외가 발생했습니다. 나는 이것에 아주 새롭다. 너희들이 나를 도와 줄 수 있니?. 내 코드는 다음과 같습니다. 다음문제 iPhone SDK의 MFMessageComposerViewController

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>. 

감사 메시지는 picker 수단 S.

답변

10

가 MFMessageComposeViewController이 성공적으로 생성되지 않고, 즉 nil된다.

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

감사합니다. 이제는 문제가 무엇인지 압니다. – sek

1

세 가지 마음에 와서 .. 즉, YES 확인 [MFMessageComposeViewController canSendText] 반환합니다.

먼저보기 컨트롤러 클래스를 MFMailComposeViewControllerDelegate를 구현하도록 선언 했습니까? 그리고 당신은 mailComposeController : didFinishWithResult : error :를 정의 해 줍니까?

둘째, 다음과 같이 설정할 수 있습니다. [self presentModalViewController : picker animated : YES];

셋째, 피커가 0이 아닌지 확인하십시오.

+0

예 위임을했고 mailComposeController : didFinishWithResult : error :를 정의했습니다. 그리고 picker가 0이 아니라 어떻게 만들지? – sek

+0

KennyTM의 조언을 따르셨습니까? 그렇다면 + canSendText가 반환하는 것은 무엇입니까? – westsider

2

대부분의 아마 당신이 아이폰 시뮬레이터에서 이것을 테스트, MFMessageComposeViewController는 일반적으로 테스트 대상 장치와 관련이있다 모달 뷰가 전무 예외를 던질 것

0

주된 이유 전무 시뮬레이터 반환 작동하지 않습니다 설정에서 전자 메일 계정을 구성하지 않아야합니다 (따라서 시뮬레이터에서 작동하지 않는 모달보기에 대한 다른 설명). @ KennyTM의 대답은 이것을 처리 할 수있는 좋은 방법입니다. 사용자에게 알려주는 경고 대화 상자를 팝업하십시오.