我试图在两个单元格中实现MFMailComposeViewController() (主题“反馈”和"feedback2")。
当我选择每个单元格时,“反馈”工作得很好,但是不调用"feedback2“。
这似乎不是一个困难的问题,但我发现很难解决这个问题。
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)
}发布于 2017-03-17 19:29:42
您的else if indexPath.row == 2缩进得太深--它的else指的是!MFMailComposeViewController.canSendMail(),而不是以前的indexPath检查。你需要把这个分支向外移动一个等级才能达到你想要的效果。
对于未来,如果您重构出一个用于所有邮件合成的方法,则可能更容易调试:
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;
}
}https://stackoverflow.com/questions/42865592
复制相似问题