MFMailComposeViewControllerDelegate未被调用

Jac*_*nig 2 ios swift mfmailcomposeviewcontroller

我意识到这个问题已被不明确地问到了,但我一直无法找到问题的答案.

我有一个带静态单元格的UITableViewController.其中一个单元格用于打开Mail Composer视图,并在用户发送或取消电子邮件后通过委托将其关闭.我的问题是没有调用委托方法.这是我的代码:

class SideMenuTableViewController: UITableViewController, MFMailComposeViewControllerDelegate, UINavigationControllerDelegate {

 override func viewDidLoad() {
        super.viewDidLoad()

        mailCVP.delegate = self
mailCVP = configureMailComposeVC()
            if MFMailComposeViewController.canSendMail() {
                self.presentViewController(mailCVP, animated: true, completion: nil)
            } else { //..// }
}

func configureMailComposeVC() -> MFMailComposeViewController {
        let mailComposerVC = MFMailComposeViewController()
        mailComposerVC.setToRecipients(["momentosdetora@gmail.com"])
            mailComposerVC.setSubject("Contacto Momentos de Tora")

        return mailComposerVC
    }

func mailComposeController(controller: MFMailComposeViewController, didFinishWithResult result: MFMailComposeResult, error: NSError?) {
        controller.dismissViewControllerAnimated(true, completion: nil)
    }
Run Code Online (Sandbox Code Playgroud)

任何人都可以发现我可能做错的事吗?

谢谢.

Emi*_*aez 6

MFMailComposeViewController是它的子类UINavigationController,它已具有delegate处理导航更改的属性.

MFMailComposeViewController还有另一个叫做mailComposeDelegate的房产,这是你要找的房产.

此外,您应该在设置委托之前创建控制器.


小智 5

确保您使用

controller.mailComposeDelegate = self
Run Code Online (Sandbox Code Playgroud)

不是这个

controller.delegate = self
Run Code Online (Sandbox Code Playgroud)