首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MFMailComposeViewController未调用

MFMailComposeViewController未调用
EN

Stack Overflow用户
提问于 2017-03-17 19:22:45
回答 1查看 190关注 0票数 0

我试图在两个单元格中实现MFMailComposeViewController() (主题“反馈”和"feedback2")。

当我选择每个单元格时,“反馈”工作得很好,但是不调用"feedback2“。

这似乎不是一个困难的问题,但我发现很难解决这个问题。

代码语言:javascript
复制
        func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

        tableView.deselectRow(at: indexPath, animated: true)

        if indexPath.row == 0 {
            let message = "hey download this app"
            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(["gmail.com"])

            mailCompose.setSubject("feedback")

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

            if MFMailComposeViewController.canSendMail()

            {

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

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

                mailCompose.mailComposeDelegate = self

                mailCompose.setToRecipients(["ba@mail.com"])

                mailCompose.setSubject("feedback2")

                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)

    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-17 19:29:42

您的else if indexPath.row == 2缩进得太深--它的else指的是!MFMailComposeViewController.canSendMail(),而不是以前的indexPath检查。你需要把这个分支向外移动一个等级才能达到你想要的效果。

对于未来,如果您重构出一个用于所有邮件合成的方法,则可能更容易调试:

代码语言:javascript
复制
private func sendMail(to recipient: String, subject: String) {
    if !MFMailComposeViewController.canSendMail() {
        return
    }

    let mailCompose = MFMailComposeViewController()
    mailCompose.mailComposeDelegate = self
    mailCompose.setToRecipients([recipient])
    mailCompose.setSubject(subject)
    mailCompose.setMessageBody("text", isHTML: false)
    self.present(mailCompose, animated: true, completion: nil)
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    switch indexPath.row {
        case 0: /* activity view controller stuff */ break;
        case 1:
            sendMail(to: "gmail.com", subject: "feedback")
            break;
        case 2:
            sendMail(to: "ba@mail.com", subject: "feedback2")
            break;
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42865592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档