异常消息:
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 Emulator上运行,但不能在设备上运行。
最佳答案
您的设备是否配置为发送电子邮件?请注意,即使是这样,您也不应该在每个用户设备上都这样。
IWO您应该调用MFMailComposeViewController.CanSendMail
,例如Apple的documented。两个重要的报价:
您必须始终检查是否使用canSendMail方法将当前设备配置为完全发送电子邮件
和
如果canSendMail方法返回NO,则不应尝试使用此接口。
例:
if (MFMailComposeViewController.CanSendMail) {
... your code ...
} else {
... show warning, like an UIAlertView
}