MailComposer didFinishWith 结果在 Swift 3.0 中不起作用

Posted

技术标签:

【中文标题】MailComposer didFinishWith 结果在 Swift 3.0 中不起作用【英文标题】:MailComposer didFinishWith results doesn't work in Swift 3.0 【发布时间】:2016-09-20 19:04:39 【问题描述】:

我将我的应用程序转换为 swift 3.0 并遇到MailComposeController 的问题。当我调用函数时:

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

首先我有一个信息错误:

对我来说奇怪的是,因为我从MFMailComposeViewControllerDelegate 复制并粘贴了此方法。当我将Error 更改为NSError 时,它可以工作,但是我收到一条带有信息的警告,此方法需要是私有的以避免此警告。

当我在 mailComposer 中查看电子邮件并尝试点击 Cancel 时,此控制器不会消失。任何解决方案如何解除此控制器?

【问题讨论】:

相同的代码对我来说工作正常。你清理和重建你的代码了吗? 是的,我尽我所能,但仍然有这个愚蠢的错误 【参考方案1】:

我遇到了同样的问题,因为我正在导入 RealmSwift,它有自己的 Error 结构。

通过指定您想要的错误类型来修复它。在这种情况下,Swift.Error

完整代码:

func mailComposeController(_控制器:MFMailComposeViewController,didFinishWith结果:MFMailComposeResult,错误:Swift.Error?) controller.dismiss(动画:真,完成:无)

【讨论】:

他妈的命名问题。一旦你创建了自己的Error 类,它会变得更加有趣

以上是关于MailComposer didFinishWith 结果在 Swift 3.0 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Expo大作战(三十三)--expo sdk api之MapView(地图),MailComposer(磁力传感计),Lottie(动画)

关闭模态视图后的状态栏和导航栏问题

在 2.2.1 设备上运行具有 3.0 功能的 iPhone 应用程序