Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
来自自定义框架的Swift电子邮件失败_Swift_Email_Frameworks - Fatal编程技术网

来自自定义框架的Swift电子邮件失败

来自自定义框架的Swift电子邮件失败,swift,email,frameworks,Swift,Email,Frameworks,我制作了一个自定义框架(Swift),我在几个不同的应用程序中使用它 我在这个框架中提供的一个功能是基本的电子邮件客户端 代码如下,但目前描述了以下行为: 最初完美加载电子邮件页面视图,所有字段都以我期望的方式显示(即地址、密件抄送、主题、附件等),但当我按send或cancel时,应用程序崩溃。它实际上发送电子邮件。我已经在“public func mailComposeController(controller:MFMailComposeViewController,didsfinishwi

我制作了一个自定义框架(Swift),我在几个不同的应用程序中使用它

我在这个框架中提供的一个功能是基本的电子邮件客户端

代码如下,但目前描述了以下行为:

最初完美加载电子邮件页面视图,所有字段都以我期望的方式显示(即地址、密件抄送、主题、附件等),但当我按send或cancel时,应用程序崩溃。它实际上发送电子邮件。我已经在“public func mailComposeController(controller:MFMailComposeViewController,didsfinishwithresult:mfmailcomposesult,error:NSError?)中打印了一个文件,但从未打印过

请参阅下面的代码:

框架

import UIKit
import MessageUI


public class Framework_Email : NSObject, MFMailComposeViewControllerDelegate{

    var picker : MFMailComposeViewController!

    public var EmailSubject    : String = ""
    public var EmailMessage    : String = ""
    public var EmailAddress    : [String] = []
    public var EmailBlindAddress    : [String] = []
    public var EmailAttachment : [NSDictionary] = []

    public func SendEmail(View : UIViewController)
    {
        picker = MFMailComposeViewController()
        picker.mailComposeDelegate = self
        picker.setToRecipients(EmailAddress)
        picker.setSubject(EmailSubject)
        picker.setMessageBody(EmailMessage, isHTML: false)
        picker.setBccRecipients(EmailBlindAddress)

        for temp in EmailAttachment
        {
            picker.addAttachmentData(temp["Data"] as! NSData, mimeType: temp["Type"] as! String, fileName: temp["Name"]as! String)
        }
        View.presentViewController(picker, animated: true, completion: nil)
    }

    public func mailComposeController(controller: MFMailComposeViewController, didFinishWithResult result:     MFMailComposeResult, error: NSError?) {
        print("Im Here!!!!!") //This is never seen in the output
        picker.dismissViewControllerAnimated(true, completion: nil)
    }
}
我在主应用程序视图控制器中通过以下方式调用它

let EmailClient : Framework_Email = Framework_Email()
EmailClient.EmailAddress = ["email@eailaddress.co.uk"]
EmailClient.EmailMessage = "Email Message"
EmailClient.EmailSubject = "Email Subject"
EmailClient.EmailBlindAddress = ["email@eailaddress.co.uk"]
EmailClient.SendEmail(self)
有人能解释一下为什么这行不通吗


谢谢在您的辞退方法中使用控制器而不是选择器:

public func mailComposeController(controller: MFMailComposeViewController, didFinishWithResult result: MFMailComposeResult, error: NSError?) { 
print("Im Here!!!!!") //This is never seen in the output
controller.dismissViewControllerAnimated(true, completion: nil)
}

我并没有运行Xcode,但问题可能是你们把视图控制器放在这里了。尝试以mail composer的代理身份实现ViewController,并在那里实现didFinishWithResult。