1

例外メッセージ:

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[]{"blubb@blubb.de"});
        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エミュレーターでは動作しますが、デバイスでは動作しません。

4

2 に答える 2

2

この宣言をメソッドの外に移動します。スコープから外れるとすぐにGCを取得する可能性があります。

MFMailComposeViewController view;
于 2012-03-14T12:30:46.807 に答える
1

お使いのデバイスはメールを送信するように構成されていますか?それがそうであるとしても、それがすべてのユーザーデバイスに当てはまると考えるべきではないことに注意してください。

MFMailComposeViewController.CanSendMailこのように呼び出す必要があるIWOは、Appleによって文書化されています。2つの重要な引用:

現在のデバイスがcanSendMailメソッドを使用して電子メールを送信するように構成されているかどうかを常に確認する必要があります

canSendMailメソッドがNOを返す場合は、このインターフェースを使用しないでください。

例:

   if (MFMailComposeViewController.CanSendMail) {
       ... your code ...
   } else {
       ... show warning, like an UIAlertView
   }
于 2012-03-15T00:51:34.110 に答える