2017-12-28 20 views
0

私は、人々にニュースレターに登録してMFMailComposerを呼び出せるようにするためにモーダルに表示コントローラを用意しました。メールが送信されたら、をクリックした後、モーダルビューコントローラを閉じることができるようにします。をメールウィンドウに送信します。これは可能ですか?MFMailComposeViewControllerで電子メールを送信した後にモーダルビューコントローラを終了する

次のように私のコードが構成されているので、これが誤って重複をマークした。

CustomViewControllerは、ユーザーがクリックするModalViewControllerを却下する必要が送信した後ModalViewController ModalViewControllerがMailComposer を呼び出す呼び出しますが。

答えて

0

MFMailComposeResultsentであることを確認した後、コントローラーをmailComposeController(_:didFinishWith:error:)で終了する必要があります。

func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) { 
    controller.dismiss(animated: true) 

    if result == .sent { 
     dismiss(animated: true) 
    } 
} 

あなたがメール作成・ビュー・コントローラのデリゲートを設定する必要がありますし、あなたのビューコントローラがMFMailComposeViewControllerDelegateプロトコルに準拠する必要があることに注意してください:正しい方法は完了ハンドラ内で結果を切り替えることです

class CustomViewController: UIViewController, MFMailComposeViewControllerDelegate { 
    fileprivate var mailComposeVc: MFMailComposeViewController! 
    [...] 

    func someFunc() { 
     mailComposeVc.delegate = self 
    } 
} 
+0

dismissメソッド –

+0

@LeoDabus OPがデバッグの目的には役立ちますが、1つの結果しか処理しない場合は、スイッチングは必須ではありません。また、私は、dismissメソッドの補完ハンドラ内のビューコントローラの破棄を処理するメリットがどのような利点があるかに興味があります。 – the4kman

+0

解任アニメーションが完了したらコードを実行するだけです –

関連する問題