func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
switch indexPath.section {
case 0: switch indexPath.row {
case 0: tableView.deselectRow(at: indexPath, animated: true)
if MFMailComposeViewController.canSendMail() {
let mailViewController = MFMailComposeViewController()
mailViewController.mailComposeDelegate = self
mailViewController.setSubject("件名")
mailViewController.setToRecipients(["aaa@aaa.com"])
mailViewController.setMessageBody("メール内容", isHTML: false)
present(mailViewController, animated: true, completion: nil)
} else {
let alert = UIAlertController(title: "メール用のアカウントが設定されていません", message: nil, preferredStyle: .alert)
let dismiss = UIAlertAction(title: "OK", style: .cancel, handler: nil)
alert.addAction(dismiss)
self.present(alert, animated: true, completion: nil)
}
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
switch result {
case .cancelled:
print("Email Send Cancelled")
break
case .saved:
print("Email Saved as a Draft")
break
case .sent:
print("Email Sent Successfully")
break
case .failed:
print("Email Send Failed")
break
default: break
}
dismiss(animated: true, completion: nil)
}
default: break
}
default: break
}
}
UITableViewCellをタップするとメーラーが起動できるようにしようとしており、上記のように書いておりました。
以下のように修正することで解決しました。
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
switch indexPath.section {
case 0: switch indexPath.row {
case 0: tableView.deselectRow(at: indexPath, animated: true)
if MFMailComposeViewController.canSendMail() {
let mailViewController = MFMailComposeViewController()
mailViewController.mailComposeDelegate = self
mailViewController.setSubject("件名")
mailViewController.setToRecipients(["aaa@aaa.com"])
mailViewController.setMessageBody("メール内容", isHTML: false)
present(mailViewController, animated: true, completion: nil)
} else {
let alert = UIAlertController(title: "メール用のアカウントが設定されていません", message: nil, preferredStyle: .alert)
let dismiss = UIAlertAction(title: "OK", style: .cancel, handler: nil)
alert.addAction(dismiss)
self.present(alert, animated: true, completion: nil)
}
default: break
}
default: break
}
}
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
switch result {
case .cancelled:
print("Email Send Cancelled")
break
case .saved:
print("Email Saved as a Draft")
break
case .sent:
print("Email Sent Successfully")
break
case .failed:
print("Email Send Failed")
break
default: break
}
dismiss(animated: true, completion: nil)
}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。