Да, это работает, но срабатывает до закрытия представления. Я ищу после.

даю приложение, которое создает электронную почту и представляет ее в MFMailComposeViewController для отправки пользователем. Когда пользователь отправляет или отменяет его, я хочу, чтобы приложение ответило соответствующим сообщением на экране подтверждения.

Я могу составить электронное письмо, закрыть экран создания, и у меня есть имя segue в IB от представления перед составлением до представления подтверждения. Но я не могу заставить этот переход выполнить.

Итак, как я могу обновить текстовое сообщение в пункте назначения segue, а затем перейти к нему.

Поскольку я пытаюсь изучить Swift, мне очень интересно понять, как работает код, а не просто получить работающий код. Поэтому я действительно ценю любую помощь.

Рабочий процесс начинается с того, что пользователь снимает фотографию из приложения:

    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

Который собирает все содержимое сообщения электронной почты и передает его:

    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

И тогда это срабатывает, когда пользователь нажимает «Отправить» или «Отмена»

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

И вот тут я оказываюсь в тупике. Я могу получить доступ к MFMailComposeResult, и это правильно, но я не могу понять, как представить представление подтверждения, чтобы оно было доступно, когда составное представление выдвигается.

Ответы на вопрос(2)

Ваш ответ на вопрос