【发布时间】:2017-07-27 08:16:43
【问题描述】:
您能否就MFMailComposeViewController 的放置位置提供一些建议?
在一个非 RxSwift 和非 Clean Architecture 项目中,我会在一些视图控制器中实现它,如下所示:
extension ViewController: MFMailComposeViewControllerDelegate {
func presentMailComposer() {
if !MFMailComposeViewController.canSendMail() {
// TODO: - Handle error here
return
}
DispatchQueue.global(qos: DispatchQoS.QoSClass.userInitiated).async {
let mailComposeViewController = MFMailComposeViewController()
mailComposeViewController.mailComposeDelegate = self
mailComposeViewController.setToRecipients(["mail@example.com"])
mailComposeViewController.setMessageBody("Message body", isHTML: false)
DispatchQueue.main.async(execute: {
self.present(mailComposeViewController, animated: true, completion: nil)
})
}
}
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
if result == MFMailComposeResult.failed {
// TODO: - Handle error here
}
}
}
在 Clean Architecture 中,您会将 Mail Composer 放在哪里?
您会从导航器/路由器中展示这个吗?它毕竟是一个“场景”,即使我们不一定有一个 Navigator/Router 和一个专用于 MailComposer 的 ViewModel。
有两个不同的地方可能会发生错误,我真的不认为导航器应该处理这些。
谢谢!
【问题讨论】:
标签: swift mfmailcomposeviewcontroller rx-swift clean-architecture