Swift 3 Cómo mostrar una pantalla de confirmación basada en la pantalla de correo electrónico MFMailComposeResult

Estoy creando una aplicación que construye un correo electrónico y lo presenta en un MFMailComposeViewController para que el usuario lo envíe. Cuando el usuario lo envía o lo cancela, quiero que la aplicación responda con un mensaje de pantalla de confirmación apropiado.

Puedo redactar el correo electrónico, cerrar la pantalla de redacción y tengo un segue con nombre en IB desde la vista de precomposición a la vista de confirmación. Pero no puedo hacer que esa secuencia se ejecute.

Entonces, ¿cómo puedo actualizar el mensaje de texto en el destino segue y luego seguirlo?

Como estoy tratando de aprender Swift, estoy muy interesado en comprender cómo funciona el código, no solo en obtener el código que funciona. Así que realmente aprecio cualquier ayuda.

El flujo de trabajo comienza cuando el usuario toma una foto de la aplicación:

    func snapPhoto(){

    if let cameraConnection = sessionOutput.connection(withMediaType: AVMediaTypeVideo) {

        sessionOutput.captureStillImageAsynchronously(from: cameraConnection, completionHandler: { buffer, error in

            let myMessage   = self.buildEmail()
            let myJpg       = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(buffer)
            let mapSnap     = (self.myMap == nil) ? nil : UIImagePNGRepresentation(self.myMap!)

            let mail        = self.setupMail(to: myMessage.to, subject: myMessage.subject, body: myMessage.body, myJpg: myJpg!, mapSnap: mapSnap)

            self.presentMailComposer(mail: mail)

        }) // close completionHandler

    } // close if let cameraConnection

} // close func snapPhoto

Que reúne todo el contenido del mensaje de correo electrónico y lo pasa a:

    func presentMailComposer(mail : MFMailComposeViewController) {

    if MFMailComposeViewController.,canSendMail() {

        self.present(mail, animated: true, completion: nil)

    } else {

        let sendMailErrorAlert = UIAlertController.init(title: "Uh oh!", message: "Unable to send email.", preferredStyle: .alert)
        self.present(sendMailErrorAlert, animated: true, completion: nil)

    } // close if

} // close presentEmailComposer

Y luego esto se dispara cuando el usuario toca "Enviar" de "Cancelar"

public func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {

    switch result.rawValue {

    case MFMailComposeResult.cancelled.rawValue:

        self.performSegue(withIdentifier: "afterEmail", sender: self)
        print("Mail cancelled")

    case MFMailComposeResult.saved.rawValue:

        print("Mail saved")

    case MFMailComposeResult.sent.rawValue:

        print("Mail sent")

    case MFMailComposeResult.failed.rawValue:

        print("Mail sent failure: %@", [error!.localizedDescription])

    default:

        break

    }

    controller.dismiss(animated: true, completion: nil)

} // close mailCompose

Y aquí es donde me encuentro perplejo. Puedo acceder a MFMailComposeResult, y es correcto, pero no puedo entender cómo presentar la vista de confirmación para que esté disponible a medida que la vista de redacción se desliza.

Respuestas a la pregunta(2)

Su respuesta a la pregunta