2012-03-14 14 views
1

例外メッセージ提示しながら:ここNSInvalidArgumentException ModalView

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

は私のコードです:

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); 
     }); 

    } 

それはiPadのエミュレータ上ではなく、デバイス上で動作します。

+0

@Jasonの答えは、完全なスタックトレース/クラッシュログを投稿してください動作しなかった場合。 – poupou

答えて

1

電子メールを送信するようにデバイスが設定されていますか?たとえそれが考慮されるべきではないとしても、それはすべてのユーザデバイス上のケースであると考えてください。

IWOの場合はMFMailComposeViewController.CanSendMailと呼びます(Appleによって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

関連する問題