NSInvalidArgumentException(呈现模式视图时出现异常)

本文关键字:异常 模式 NSInvalidArgumentException 视图 | 更新日期: 2023-09-27 18:27:41

异常消息:

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 Emulator上运行,但不能在设备上运行。

NSInvalidArgumentException(呈现模式视图时出现异常)

将此声明移到方法之外。它很可能在超出范围后立即获得GC。

MFMailComposeViewController view;

您的设备是否配置为发送电子邮件?请注意,即使是这样,您也不应该考虑在每个用户设备上都会出现这种情况。

您应该调用MFMailComposeViewController.CanSendMail的IWO,就像苹果公司记录的那样。两个重要的报价:

您必须始终检查当前设备是否配置为使用canSendMail方法发送电子邮件

如果canSendMail方法返回NO,则不应尝试使用此接口。

示例:

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