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上运行,但不能在设备上运行。
将此声明移到方法之外。它很可能在超出范围后立即获得GC。
MFMailComposeViewController view;
您的设备是否配置为发送电子邮件?请注意,即使是这样,您也不应该考虑在每个用户设备上都会出现这种情况。
您应该调用MFMailComposeViewController.CanSendMail
的IWO,就像苹果公司记录的那样。两个重要的报价:
您必须始终检查当前设备是否配置为使用canSendMail方法发送电子邮件
和
如果canSendMail方法返回NO,则不应尝试使用此接口。
示例:
if (MFMailComposeViewController.CanSendMail) {
... your code ...
} else {
... show warning, like an UIAlertView
}