MailController
MailController是围绕着MFMailComposeViewController的一个轻量级Swift包装器,为您提供了一个方便的接口。
它消除了实际代理模式的使用,并在必要时提供了一个基于块的API。
MFMailComposeViewController通过重复使用出现问题,因此不鼓励这样做。
相反,MailController提供了单例,并在关闭后处理MFMailComposeViewController的释放。
示例
要运行示例项目,请克隆仓库,然后首先在Example目录中运行pod install
命令。
要求
- iOS 9.0+
安装
CocoaPods
MailController 可通过 CocoaPods 获得。要使用 CocoaPods 将其集成到您的 Xcode 项目中,请在 Podfile
中指定它。
platform :ios, '9.0'
target '<Your Target Name>' do
pod 'MailController', '~> 1.0'
end
源文件
或者,您可以直接将 Mailcontroller.swift
(以及可选的 MailControllerDefaultResultHandler.swift
)源文件添加到您的项目中。
用法
快速开始
import MailController
class ViewController: UIViewController {
@IBAction func mailAction() {
if let mailComposeViewController = MailController.shared.mailComposeViewController() {
mailComposeViewController.setToRecipients(["[email protected]"])
mailComposeViewController.setSubject("Test")
mailComposeViewController.setMessageBody("Hello world!", isHTML: false)
present(mailComposeViewController, animated:true, completion:nil)
}
}
}
默认情况下,当用户完成界面时,它将被关闭。
但您可以自定义此行为,并使用 completionHandler 块使用结果和错误参数。
@IBAction func mailAction() {
let mailComposeViewController = MailController.shared.mailComposeViewController { (controller, result, error) in
switch (result) {
case MFMailComposeResult.failed:
print("Failed to send Email with error: \(error?.localizedDescription ?? "")!")
default:
break
}
controller.dismiss(animated: true, completion: nil)
}
if let mailComposeViewController = mailComposeViewController {
present(mailComposeViewController, animated:true, completion:nil)
}
}
}
作者
Volodymyr Kolibaba, [email protected]
许可
MailController 适用于 MIT 许可证。有关更多信息,请参阅 LICENSE 文件。