PerformSegue после получения результата по электронной почте - PullRequest
0 голосов
/ 17 декабря 2018
    When sending an email:


        if MFMailComposeViewController.canSendMail()
            {
                let mail = MFMailComposeViewController()
                mail.mailComposeDelegate = self
                // the set to receipient
                // is always this email
                // since this is the owners email
                mail.setSubject("ORDER CONFIRMATION RODEO'S CATERING")
                mail.setToRecipients(["rodeoscatering2018@gmail.com"])
                mail.setMessageBody( m_information_for_body , isHTML: false)
                self.present(mail, animated: true)
            }


         func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?)
         {
          // In here I am checking if it is sent
         case .sent:
            do
            {
               print("sent")

                controller.dismiss(animated: true, completion: nil)
                // and then doing a performSegue below...
                // performSegue(withIdentifier....)
            }

          }

Я знаю, что это не проблема с идентификатором, и все сегменты есть.Я вижу сообщение для печати.Но, к сожалению, все, что происходит, это то, что, когда появляется сообщение «Электронная почта», я нажимаю кнопку «Отправить», тогда контроллер электронной почты закрывается (что хорошо) и возвращает меня к текущему экрану, на котором я нахожусь, и выводится сообщение для печати, однако executeSegue не 't.

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

Swift 4.2 & Latest xCode 10.1

1 Ответ

0 голосов
/ 17 декабря 2018

Кредит Уиллию:

, чтобы показать пример кода его комментария, который сработал: Это делает следующее: - Если письмо отправлено, мы показываем предупреждение о том, что оно успешно, затем выполняем SeSegue () на домашнем экране, когда пользовательнажимает «ОК» в сообщении:

func go_back_home() -> Void
{
    let title   = "Confirmation Order Status"
    let message = "Message was sent. Check email for a copy"

    let alert = UIAlertController(
        title: title,
        message: message,
        preferredStyle: .alert)

    alert.addAction(UIAlertAction(title:"OK", style: .default, handler:
    {
        action in self.performSegue(withIdentifier: "order_info_back_to_home_page", sender: self)

    }))

    self.present(alert, animated: true)
}

Тогда мы используем функцию go_back_home () следующим образом:

func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?)
         {
          // In here I am checking if it is sent
         case .sent:
            do
            {
               print("sent")

                controller.dismiss(animated: true, completion: go_back_home)
            }

          }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...