我已经在 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/