簡體   English   中英

MFMailComposeViewController委托不適用於Swift 4

[英]MFMailComposeViewController delegate not working on swift 4

我正在嘗試關閉MFMailComposeViewController,但是未觸發委托。 看來這是一個普遍的問題,答案是相同的,但是它們對我不起作用:(。我有一個按鈕調用該函數來發送郵件。我首先創建一個csv文件,然后創建MFMailComposeViewController並附加csv文件到郵件,有時會發送郵件(此后郵件視圖控制器不會關閉),並且“取消”按鈕向我顯示了刪除或保存草稿的選項,但此后什么都沒有發生。

這是按鈕的代碼:

import UIKit
import MessageUI

class UserInfoViewController: UIViewController, MFMailComposeViewControllerDelegate {

@IBAction func uploadPressed(_ sender: Any) {

        let contentsOfFile = "Name,ID,Age,Sex,Time,\n\(name),\(id),\(age),\(sex),\(time)"

        let data = contentsOfFile.data(using: String.Encoding.utf8, allowLossyConversion: false)

        if let content = data {
            print("NSData: \(content)")
        }

        func configuredMailComposeViewController() -> MFMailComposeViewController {

            let emailController = MFMailComposeViewController()

            //emailController.mailComposeDelegate = self as? MFMailComposeViewControllerDelegate
            emailController.mailComposeDelegate = self
            emailController.setToRecipients([""])
            emailController.setSubject("CSV File")
            emailController.setMessageBody("", isHTML: false)

            emailController.addAttachmentData(data!, mimeType: "text/csv", fileName: "registro.csv")

            return emailController

        }

        let emailViewController = configuredMailComposeViewController()

        if MFMailComposeViewController.canSendMail() {

            self.present(emailViewController, animated: true, completion: nil)

        }

        func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {

            print("Delegate worked!")
            controller.dismiss(animated: true, completion: nil)

        }

    }
}

提前非常感謝您。

您的問題是由於將委托方法放在另一個方法中引起的。 你不能那樣做。 委托功能必須位於類的頂層。 只需將您的mailComposeController(_:didFinishWith:error:)函數移出uploadPressed函數即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM