2016-05-29 13 views
-1

Ich habe eine Seite mit 5 UITextfields und 1 UItextview. Dies ist ein E-Mail-Formular, und ich möchte es so, wenn Sie den Knopf drücken, der die E-Mail sendet, löscht es auch die Textfelder und die Textansicht. Es ist sehr wichtig, dass dies nur geschieht, nachdem die Daten für die E-Mail gesammelt wurden, so dass die E-Mail nicht leer ist.Clearing UITextfields mit UIButton

Code:

@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 

Bild von Seite: Mail form page

+0

"Es ist sehr wichtig, dass dies nur geschieht, nachdem die Daten für die E-Mail gesammelt wurden". Woher weiß man, dass die Daten gesammelt wurden? Gesammelt wo? Möglicherweise möchten Sie diesen Teil einfügen, da er scheinbar fehlt. –

+0

Entschuldigung. Wie ich bereits erwähnt habe, ist es ein Mailformular, und im Code steht "messagebody" und fasst alle Textfelder zusammen, dh wenn die Daten gesammelt und in eine E-Mail eingegeben werden. –

+0

Was passiert, wenn die E-Mail nicht durchgeht? Ich habe festgestellt, dass Sie eine Fehlerüberprüfung in Ihrem Code durchgeführt haben, obwohl dies allumfassend ist, um andere Probleme zu vermeiden? Sie können die Ansicht auch nach dem erfolgreichen Senden abbrechen und die Daten in den Feldern möglicherweise mit einer optionalen Schaltfläche "Felder löschen" belassen. –

Antwort

0

diese

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

Versuchen Da text6 ein UITextView ist, sie separat setzen.

text6.text = "" 
+0

text6 ist eine Textansicht, würde das noch funktionieren? :) –

+0

Ja. Es würde immer noch funktionieren. – penatheboss

+0

Vielen Dank, dass es mit allen Textfeldern funktioniert hat, aber wenn ich die Textansicht hinzufüge, heißt es "Wert des Typs UIView hat kein Mitglied" text ". Weißt du, wie ich das beheben konnte? :) –

0

In der Funktion, die auf Vorlage aufgerufen wird, speichert zunächst die Werte des Textes der Felder zu Variablen, dann danach stellen Sie die Text für alle Felder auf Null setzen. An diesem Punkt haben Sie die Informationen und die Felder werden leer sein.

+0

Könntest du ein wenig ausarbeiten? ist es wichtig, dass sie jeweils eine Variable haben oder ist die Variable "messagebody" ausreichend? –

+0

Sie müssen jeweils eine Variable haben. Um den Nachrichtentext zu erstellen, kombinieren Sie sie einfach zu einem "String", wie Sie es für richtig halten. –