我的应用程序中有以下代码来发送电子邮件:
let ToRecipents = ["recipient here"]
let subject = "subject here"
let MessageBody = "message here"
let mc : MFMailComposeViewController = MFMailComposeViewController()
mc.mailComposeDelegate = self
mc.setToRecipients(ToRecipents)
mc.setSubject(subject)
mc.setMessageBody(MessageBody, isHTML: false)
self.present(mc, animated: true, completion: nil)
}
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWithResult result: MFMailComposeResult, error: NSError?) {
controller.dismiss(animated: true, completion: nil)
}我似乎不能让MFMailComposeViewController驳回,我做错了什么??
发布于 2018-01-09 21:10:59
在不调用委托方法的一般情况下:
·检查是否设置了代理。您可以使用mc.mailComposeDelegate = self正确地执行此操作
·检查您设置的委托方法是否符合协议。
·检查委托方法是否在作为委托传递的对象中正确实现(这就是您的问题所在)。阅读文档,或者删除方法声明,让编译器/IDE/XCode自动完成它。在Swift中,在不同的教程之间,它们经常是问题,因为Swift 1,Swift 2,Swift 3/4已经重命名了方法并导致了问题,教程只关注Swift版本。
你的方法:
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWithResult result: MFMailComposeResult, error: NSError?)来自documentation的方法
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?)因为它们是不同的,并且iOS SDK应该检查委托是否响应了正确的方法,那么您的方法就不应该被调用,因为它不匹配。
https://stackoverflow.com/questions/48168807
复制相似问题