Ios 如何关闭MFMailComposeViewController?

Ios 如何关闭MFMailComposeViewController?,ios,swift,email,mfmailcomposeviewcontroller,Ios,Swift,Email,Mfmailcomposeviewcontroller,我想从我的Swift应用程序发送一封电子邮件,它运行良好,可以发送电子邮件 然而,在发送电子邮件后,布局不会停止。我想在发送电子邮件后退出布局。当我按下“取消”、“删除草稿”或“保存草稿”按钮时,我也希望看到这种行为 这是我必须发送电子邮件的代码(按下按钮后): 但当我按下“取消”或“发送”按钮时,布局不会停止 我知道有很多关于这个问题的问题,但是我看了很多,这是我可以从一些问题中得到的代码。请注意,大多数方法都是客观的,而不是Swift(有时这些方法并不存在) 例如: 我的代码有什么遗漏吗?如

我想从我的Swift应用程序发送一封电子邮件,它运行良好,可以发送电子邮件

然而,在发送电子邮件后,布局不会停止。我想在发送电子邮件后退出布局。当我按下“取消”、“删除草稿”或“保存草稿”按钮时,我也希望看到这种行为

这是我必须发送电子邮件的代码(按下按钮后):

但当我按下“取消”或“发送”按钮时,布局不会停止

我知道有很多关于这个问题的问题,但是我看了很多,这是我可以从一些问题中得到的代码。请注意,大多数方法都是客观的,而不是Swift(有时这些方法并不存在)

例如:

我的代码有什么遗漏吗?如何检测删除草稿和保存草稿事件


提前谢谢

看起来您使用的是swift 3,而不是有效的委托方法。更正的委托方法如下:

func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {

        switch result {
        case .cancelled:
            break
        case .saved:
            break
        case .sent:
            break
        case .failed:
            break

        }

        dismiss(animated: true, completion: nil)
    }

看起来您正在使用swift 3,但未使用有效的委托方法。更正的委托方法如下:

func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {

        switch result {
        case .cancelled:
            break
        case .saved:
            break
        case .sent:
            break
        case .failed:
            break

        }

        dismiss(animated: true, completion: nil)
    }

如果在任何情况下都要关闭
controller
,为什么不拿出开关,让
controller.disclose(动画:true,完成:nil)
@Adrian因为它没有关闭控制器,所以我试着分别关注每个事件。@Anish웃 你的确切意思是什么?你的类声明中有
MFMailComposeViewControllerDelegate
,还是
YourViewController
的扩展?另一个想法是去掉
开关中的
中断
行。我正在看一个正在工作的
MFMailComposeController
,我没有它…它在所有场景中都可以正常工作。是的,我已经扩展到MFMailComposeViewControllerDelegate。电子邮件有效,我不能做的是关闭控制器。如果你在任何情况下都要关闭
Controller
,为什么不拿出开关,让
Controller.disclose(动画:true,完成:nil)
@Adrian因为它没有关闭控制器,所以我试着分别关注每个事件。@Anish웃 你的确切意思是什么?你的类声明中有
MFMailComposeViewControllerDelegate
,还是
YourViewController
的扩展?另一个想法是去掉
开关中的
中断
行。我正在看一个正在工作的
MFMailComposeController
,我没有它…它在所有场景中都可以正常工作。是的,我已经扩展到MFMailComposeViewControllerDelegate。电子邮件工作,我不能做的是解除控制器。好的,最后我注意到发送草稿或保存草稿上的取消按钮是取消这两个选项,而不是取消电子邮件。星期一很辛苦。您是对的,委托方法是错误的。非常感谢。它就像一个符咒<应在显示视图控制器而不是显示视图控制器上调用code>.discouse
。这不太可能造成问题,因为苹果目前正在处理这起案件(以及他们处理的文档),但这使得代码在技术上不正确。@StevenFisher感谢您的指出。我已经更新了代码。好的,最后我注意到“发送草稿”或“保存草稿”上的“取消”按钮是取消这两个选项,而不是取消电子邮件。星期一很辛苦。您是对的,委托方法是错误的。非常感谢。它就像一个符咒<应在显示视图控制器而不是显示视图控制器上调用code>.discouse
。这不太可能造成问题,因为苹果目前正在处理这起案件(以及他们处理的文档),但这使得代码在技术上不正确。@StevenFisher感谢您的指出。我已经更新了代码。