インスタンス化されたときに、別のViewControllerにMFMailComposeViewControllerを表示するDataHandlerオブジェクトがあります。別のViewControllerからMFMailComposeViewControllerを閉じることができません
例えば、クラスでは、私はIBActionその電子メールデータを持っているし、そうするために、データハンドラを呼び出す:データハンドラは、この行い
@IBAction func exportData(_ sender: Any) {
let dh = DataHandler()
dh.sendEmail(vc: self)
}
:
func configureEmail() -> MFMailComposeViewController{
let mailComposerVC = MFMailComposeViewController()
let dataHandler = DataHandler()
let data = dataHandler.getData(fileName: file!)
mailComposerVC.mailComposeDelegate = self
mailComposerVC.setToRecipients([emailAddr!])
mailComposerVC.setSubject("blah!")
mailComposerVC.addAttachmentData(data as Data, mimeType: "text/csv", fileName: "file.csv")
return mailComposerVC
}
func sendEmail(vc: UIViewController){
if MFMailComposeViewController.canSendMail() {
let emailClient = configureEmail()
vc.show(emailClient, sender: vc)
}
else{
print("Unable to send emails")
}
}
を私ができますよただし、電子メールを送信するには、送信後にView Controllerを閉じることができません。私はすでにDataHandlerにこれを挿入しました
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
// Dismiss the mail compose view controller.
controller.dismiss(animated: true, completion: nil)
}
私は解決策のためにインターネットを磨き、知恵袋で終わりです。助けてください! :)
編集1: 変更controller.dismiss(アニメーション:真、完了を:ゼロ)self.dismissする(アニメーション:真、完了:ゼロ)
まず、このコントローラを提示する必要があります。 mailComposerVC.mailComposeDelegate =自己 – Mannopson