我有一個DataHandler對象,實例化時顯示一個MFMailComposeViewController到不同的ViewControllers。無法關閉MFMailComposeViewController從一個單獨的ViewController
例如,在一個類中,我有一個IBAction爲的是電子郵件的數據,爲了做到這一點來電的DataHandler:
@IBAction func exportData(_ sender: Any) {
let dh = DataHandler()
dh.sendEmail(vc: self)
}
的DataHandler然後做到這一點:
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")
}
}
我能發送電子郵件,但是,發送後無法關閉視圖控制器。我已經將此插入到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(動畫:真,完成:無)
首先:您必須出示此控制器。 – Mannopson