2016-09-21 8 views
0

あなたがうまくいくことを祈っています。MFMailComposeViewControllerが終了しません(iOS10)

私はSwiftにはとても新しいです。私はiOS10 SDKを使ってXCode 8.0上にiOSアプリケーションを構築しました。私は、ユーザーが事前に設定された電子メールアドレスに電子メールを送信できるようにする機能を追加しようとしています。送信ボタンをタップすると、MFMailComposeViewControllerが正常に開き、追加されたメールアカウントを使用して送信またはキャンセルすることができます。送信をクリックすると、実際に電子メールが送信されますが、メールを送信した後、またはキャンセルボタンをクリックしても、MFMailComposeViewControllerは終了しません。助けてください!

おかげ

import UIKit 
import MessageUI 

class EmailHelpdesk_ViewController: UIViewController, MFMailComposeViewControllerDelegate { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Do any additional setup after loading the view. 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    //Email Subject and Body text fields. 
    @IBOutlet var helpdesk_email_subject: UITextField! 
    @IBOutlet var helpdesk_email_body: UITextView! 

    //Helpdesk (Submit Button - Config) 
    @IBAction func helpdesk_email_send(_ sender: AnyObject) { 
     let HDsubjectText = helpdesk_email_subject.text 
     let HDbodyText = helpdesk_email_body.text 

     MFMailComposeViewController to be called. 
     let mail_controller_compose = MFMailComposeViewController() 
     mail_controller_compose.mailComposeDelegate = self 

     mail_controller_compose.setToRecipients(["[email protected]"]) 
     mail_controller_compose.setSubject(HDsubjectText!) 
     mail_controller_compose.setMessageBody(HDbodyText!, isHTML: false) 


     self.present(mail_controller_compose, animated: true, completion: nil) 
    } 

    func mailComposeController(controller: MFMailComposeViewController, 
     didFinishWithResult result:MFMailComposeResult, error: NSError?) { 
     controller.dismiss(animated: true, completion: nil) 

     } 
    } 
} 
+1

メソッド/関数と変数名は、慣習的にラクダのようにする必要があります。たとえば、 'helpdesk_email_send'の代わりに' helpdeskEmailSend'を使います。 – Adrian

答えて

1

は、このことで、あなたの完全なコードを交換してください。

import UIKit 
import MessageUI 

class EmailHelpdesk_ViewController: UIViewController, MFMailComposeViewControllerDelegate { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Do any additional setup after loading the view. 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    //Email Subject and Body text fields. 
    @IBOutlet var helpdesk_email_subject: UITextField! 
    @IBOutlet var helpdesk_email_body: UITextView! 

    var mail_controller_compose:MFMailComposeViewController! 

    //Helpdesk (Submit Button - Config) 
    @IBAction func helpdesk_email_send(_ sender: AnyObject) { 
     let HDsubjectText = helpdesk_email_subject.text 
     let HDbodyText = helpdesk_email_body.text 

     //MFMailComposeViewController to be called. 
     mail_controller_compose = MFMailComposeViewController() 
     mail_controller_compose.mailComposeDelegate = self 

     mail_controller_compose.setToRecipients(["[email protected]"]) 
     mail_controller_compose.setSubject(HDsubjectText!) 
     mail_controller_compose.setMessageBody(HDbodyText!, isHTML: false) 


     self.present(mail_controller_compose, animated: true, completion: nil) 
    } 

    func mailComposeController(controller: MFMailComposeViewController, 
     didFinishWithResult result:MFMailComposeResult, error: NSError?)  { 
     mail_controller_compose.dismiss(animated: true, completion: nil) 
    } 
} 

一度お試しください。

+0

こんにちはMK、あなたの返信ありがとう!私はちょうどあなたが投稿したコードを試してみましたが、Xcodeには、controller.dismissViewControllerAnimated(true、completion:nil)がcontroller.dismiss(animated:true、completion:nil)に置き換えられたというエラーが表示されています。助言がありますか? –

+0

あなたはswift> 2.2を使っていると思います。だから、私が思っていたのは間違っている。私は一度助けられた別のアプローチで答えを更新しました。それを試してみてください。 –

関連する問題