2016-05-29 4 views
-1

5つのUITextfieldと1つのUItextviewを持つページがあります。これらは電子メールフォームです。電子メールを送信するボタンを押すと、テキストフィールドとテキストビューもクリアされます。電子メールのデータが収集された後でのみこれを行うことが非常に重要なので、電子メールは空ではありません。UITextfieldsをUIButtonでクリアする

コード:ページの

@IBOutlet var text1: UITextField! 
@IBOutlet var text2: UITextField! 
@IBOutlet var text3: UITextField! 
@IBOutlet var text4: UITextField! 
@IBOutlet var text5: UITextField! 
@IBOutlet var text6: UITextView! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    self.text1.delegate = self 
    self.text2.delegate = self 
    self.text3.delegate = self 
    self.text4.delegate = self 
    self.text5.delegate = self 

    // Do any additional setup after loading the view. 

} 
override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
} 
@IBAction func sendEmail(sender: AnyObject) {  let mailComposeViewController = configuredMailComposeViewController() 



if MFMailComposeViewController.canSendMail() { 
self.presentViewController(mailComposeViewController, animated: true, completion: nil) 
} else { 
self.showSendMailErrorAlert() 
} 
func configuredMailComposeViewController() -> MFMailComposeViewController { 
let mailComposerVC = MFMailComposeViewController() 
mailComposerVC.mailComposeDelegate = self // Extremely important to set the --mailComposeDelegate-- property, NOT the --delegate-- property 
let messageBody = text1.text!+"\n"+text2.text!+"\n"+text3.text!+"\n"+text4.text!+"\n"+text5.text!+"\n"+text6.text! 
mailComposerVC.setToRecipients(["[email protected]"]) 
mailComposerVC.setSubject("New Dumpster") 
mailComposerVC.setMessageBody(messageBody, isHTML: false) 
return mailComposerVC 

画像:提出に呼び出される関数で Mail form page

+0

"電子メールのデータが収集された後でのみこれを行うことが非常に重要です。"データが収集されたことをどのように知っていますか?どこで収集?あなたは一見欠けているようにその部分を含めることができます。 –

+0

申し訳ありません。私はそれがメールフォームであり、コードでは "メッセージボディ"と言い、すべてのテキストフィールドを結合します。つまり、データが収集され、電子メールに送られます。 –

+0

メールが届かない場合はどうすればいいですか?私はあなたのコードにエラーチェックがあることに気付きましたが、それは他の問題をすべて保護していますか?また、ビューが正常に送信された後にそのビューを閉じ、オプションの「フィールドをクリア」ボタンを使用してフィールドにデータを残すこともできます。 –

答えて

0

は別に、それを入れて、この

for textField in [text1, text2, text3,text4, text5] { 
    textField.text = "" 
} 

を試してみてください。

text6.text = "" 
+0

text6はtextviewですが、これはまだ動作しますか? :) –

+0

はい。それでも動作します。 – penatheboss

+0

すべてのテキストフィールドでうまくいらっしゃってくれてありがとうございますが、textviewを追加すると "タイプUIViewのメンバーに" text "という値はありません。どうすればこの問題を解決できますか?:) –

0

、最初の変数へのフィールドのテキストの値を格納し、後のことは設定しますすべてのフィールドのテキストをnilにします。その時点で情報が得られ、フィールドは空になります。 text6UITextViewあるので

+0

少し詳しく説明できますか?彼らはそれぞれが変数を持っているか、または "メッセージボディ"の変数が十分にあることが重要ですか? –

+0

それぞれに変数が必要です。次に、メッセージ本文を作成するには、単純にそれらを結合して 'String'にします。 –

関連する問題