无法让应用关闭邮件撰写视图控制器 & return 到第一个屏幕

Can't get app to dismiss the mail compose view controller & return to first screen

我正在使用 Swift 这本书来尝试学习编码。我添加了委托方法来关闭视图,但它不起作用。我在这里错过了什么?

@IBAction func emailButtonTapped(_ sender: UIButton) {

    if !MFMailComposeViewController.canSendMail() {
        print("Can not send mail")
        return
    }

    guard MFMailComposeViewController.canSendMail() else { return }

    let mailComposer = MFMailComposeViewController()
    mailComposer.mailComposeDelegate = self

    mailComposer.setToRecipients(["example@example.com"])
    mailComposer.setSubject("Look at this")
    mailComposer.setMessageBody("Hello, this is an email from the app I made.", isHTML: false)

    present(mailComposer, animated: true, completion: nil)

    func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
        dismiss(animated: true, completion: nil)
    }

}

您只需在 IBAction:

之外声明委托函数
@IBAction func emailButtonTapped(_ sender: UIButton) {
    if !MFMailComposeViewController.canSendMail() {
        print("Can not send mail")
        return
    }

    guard MFMailComposeViewController.canSendMail() else { return }

    let mailComposer = MFMailComposeViewController()
    mailComposer.mailComposeDelegate = self

    mailComposer.setToRecipients(["example@example.com"])
    mailComposer.setSubject("Look at this")
    mailComposer.setMessageBody("Hello, this is an email from the app I made.", isHTML: false)

    present(mailComposer, animated: true, completion: nil)
}

func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
    dismiss(animated: true, completion: nil)
}