2016-10-18 8 views
0

Я создаю приложение, которое позволяет пользователю отправлять простые письма через MFMailComposer. Я уже настроил эту часть, но я пытаюсь понять, как только сообщение отправлено, как мне обновить представление таблицы, показывающее что-то вроде «Email отправлено», возможно, с отметкой времени? до сих пор у меня есть массив строк, которые должны хранить данные для сообщений электронной почты отправлено:Swift: как определить, когда отправлено электронное письмо, чтобы обновить представление таблицы?

var emailSent = [String]() 

Любое предложение или помощь будет действительно быть оценены!

+0

С какой частью вам нужна помощь? У вас есть код в методе делегата почтового композитора для проверки результата? – rmaddy

ответ

0

Вы можете создать свойство в контроллере 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) 
} 
0

Вы можете создать собственный подкласс MFMailComposerViewController, переопределить setMessageBody и сохранить отправленный кузов для позднего использования:

class MyMailComposer: MFMailComposeViewController { 
    var lastSentBody:String? 

    override func setMessageBody(_ body: String, isHTML: Bool) { 
     lastSentBody = body 
     super.setMessageBody(body, isHTML: isHTML) 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^