#ios #swift #email #swift3 #mfmailcomposer
#iOS #swift #Адрес электронной почты #swift3 #mfmailcomposer
Вопрос:
Я создаю приложение, которое позволяет пользователю отправлять простое электронное письмо через MFMailComposer. Я уже настроил эту часть, но я пытаюсь выяснить, как после отправки электронного письма обновить табличное представление, показывающее что-то вроде «Отправлено электронное письмо» с возможной отметкой времени? пока у меня есть массив строк, в котором должны храниться данные для отправленных электронных писем:
var emailSent = [String]()
Любое предложение или помощь будут действительно оценены!
Комментарии:
1. С какой именно частью вам нужна помощь? Есть ли у вас код в методе делегирования mail composer для проверки результата?
Ответ №1:
Вы могли бы создать свойство в своем контроллере tableview с именем selectedCellIndexPathRow, которое вы бы установили в своем методе didSelectRowAtIndexPath:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
selectedCellIndexPathRow = indexPath.row
//Open your MailComposeViewController
}
Затем вы можете выполнить следующие действия после отправки электронного письма:
func mailComposeController(controller: MFMailComposeViewController, didFinishWithResult result: MFMailComposeResult, error: NSError?) {
if result.rawValue == MFMailComposeResult.Sent.rawValue {
emailSent[selectedCellIndexPathRow] = true
tableView.reloadData()
}
// Dismiss the mail compose view controller.
controller.dismissViewControllerAnimated(true, completion: nil)
}
Ответ №2:
Вы можете создать пользовательский подкласс MFMailComposerViewController
, переопределить setMessageBody
и сохранить отправленное тело для последующего использования:
class MyMailComposer: MFMailComposeViewController {
var lastSentBody:String?
override func setMessageBody(_ body: String, isHTML: Bool) {
lastSentBody = body
super.setMessageBody(body, isHTML: isHTML)
}
}