2012-03-14 4 views
1

예외 메시지 :NSInvalidArgumentException 제시하면서 ModalView

partial void BtnTest (MonoTouch.Foundation.NSObject sender) 
    { 
     MFMailComposeViewController view = new MFMailComposeViewController(); 
     view.SetToRecipients(new string[]{"[email protected]"}); 
     view.SetMessageBody("Hier steht nun der zusammengestellt text :)", false); 
     //view.MailComposeDelegate = new CustomMailComposeDelegate(); 
     view.SetSubject("Test"); 

     view.Finished += (s,e)=> 
        { 
          this.NavigationController.DismissModalViewControllerAnimated(true); 
     }; 

     this.BeginInvokeOnMainThread(()=> 
     { 
      this.NavigationController.PresentModalViewController(view, true); 
     }); 

    } 

그것은 아이 패드 에뮬레이터에서 작동하지만 장치에 : 여기

Objective-C exception thrown. Name: NSInvalidArgumentException Reason: 
Application tried to present a nil modal view controller on target <Navigator: 0x1bed0d0>. 

내 코드입니다.

+0

합니다. – poupou

답변

1

전자 메일을 보내도록 장치가 구성되어 있습니까? 비록 그것이 당신이 그것을 고려하지 않아야한다고해도 모든 사용자 장치에 해당 될 것입니다.

IWO MFMailComposeViewController.CanSendMail과 같은 번호는 documented입니다. 두 가지 중요한 인용 :

당신은 항상 현재의 장치가 canSendMail 방법을 사용하여 모든 이메일을 보내도록 구성되어있는 경우

당신은 사용하지해야 확인해야한다

canSendMail 메소드가 NO를 돌려주는 경우,이 인터페이스

예 : @ 제이슨의 대답은 다음 작업 전체 스택 트레이스/충돌 로그를 게시하시기 바랍니다하지 않았다

if (MFMailComposeViewController.CanSendMail) { 
     ... your code ... 
    } else { 
     ... show warning, like an UIAlertView 
    } 
+0

오, 이런, iPad에서 EmailAccount를 구성하는 것을 잊어 버렸습니다. 문제 해결됨. 당신의 도움을 주셔서 감사합니다. – Alex

2

이 선언을 메소드 외부로 옮깁니다. 범위를 벗어나면 곧바로 GC를받습니다.

MFMailComposeViewController view; 
+0

가 작동하지 않습니다. 동일한 예외 – Alex