ios - 在 tableView 中实现 MailComposeController

标签 ios swift

我已经在 TableView 中创建了设置页面。当我点击第 0 行时,调用 UIActivityViewController。当我点击第 2 行时,将调用 MailComposeController。

MailComposeController 已调用,但当我点击邮件屏幕上的取消或发送按钮时它不起作用。

代码如下。

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

        if indexPath.row == 0 {

            let message = "Hey download my app [LINK]"
            let shareView = UIActivityViewController(activityItems: [message], applicationActivities: nil)
            self.present(shareView, animated: true, completion: nil)

        } else if indexPath.row == 1 {
            let mailCompose = MFMailComposeViewController()

            mailCompose.mailComposeDelegate = self

            mailCompose.setToRecipients(["address@gmail.com"])

            mailCompose.setSubject("feedback")

            mailCompose.setMessageBody("text", isHTML: false)

            if MFMailComposeViewController.canSendMail()

            {
                self.present(mailCompose, animated: true, completion: nil)
            }

            else{

                print("error...!")

            }
        }



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

            controller.dismiss(animated: true, completion: nil)

        }

最佳答案

您必须将委托(delegate)方法放在 ViewController 中,而不是放在 tableView:didSelectRowAt 方法中:

extension ViewController: MFMailComposeViewControllerDelegate {
    func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
        controller.dismiss(animated: true, completion: nil)
    }
}

关于ios - 在 tableView 中实现 MailComposeController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42710498/

相关文章:

ios - 我从哪里获得 Urban Airship 注册 iOS 所需的设备 token ?

ios - 带集合的核心数据实体

iphone - iOS - iphone/ipad 版本控制

ios - Swift 中视觉约束的奇怪问题,因为相关 View 没有 super View

ios - NSInvocation/invoke 对的 addTarget 失败

ios - 存档验证错误

ios - 未调用 UICollectionView 方法(collectionView cellForItemAt indexPath)

ios - Autolayout 在 iOS 8 应用程序(Interface Builder)中没有给出预期的输出/行为

swift - 在 Swift 4 中屏蔽电子邮件和电话号码

swift - 为什么我不能对字典使用 SetValue?