2016-05-02 13 views
0

Ich bin den Aufbau einer Form ein UITableView mit vielen verschiedenen Arten von UITableViewCell s Diese Zellen können eine UITextView, UISwitch, UISlider, UITextField usw.Sammeln von Daten aus UI-Elemente innerhalb eines UITableViewCell

Ich muss gesammelt haben haben mit All die Eingabe des Benutzers in eine Dictionary, damit ich die Benutzereingaben zurück zum Server senden kann.

Würden Sie die Daten am besten sammeln, indem Sie die Delegierten aller Benutzeroberflächenelemente auf den Controller setzen?

Also für UITextView, in

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 

sampleTextView.delegate = self 
sampleTextView.tag = [tagNumber] 

Und dann den Text bekommen und das Hinzufügen/Aktualisieren des Wörterbuchs in - textViewDidEndEditing:

Hinweis - Auch werden die Formulare dynamisch aufgebaut und ändern können.

+0

Sie legen die Delegierten für die Elemente zur Selbst damit Ihre Klasse auf die Ereignisänderungen dieser Elemente reagiert. Das ist ein grundlegender Schritt. Um Daten von ihnen zu erhalten, müssen Sie nicht delegieren, Sie könnten einfach die Daten von den Elementattributen bekommen. Ihre Frage ist zu breit, bitte geben Sie mehr Details von dem, was Sie versuchen zu tun! –

+0

@TejaNandamuri Ich bin mir nicht sicher, was Sie meinen, indem Sie "die Daten von den Elementattributen holen"? Ein Benutzer füllt im Grunde ein Formular aus, das mit einem 'UITableView' erstellt wurde, und es gibt viele verschiedene Arten von UI-Objekten. Ich möchte alle Eingabedaten erfassen und speichern. Ich frage, was ist der beste Weg, um alle diese Daten zu erfassen, so wenn der Benutzer auf "Senden" drückt, kann ich alle Informationen an den Server senden. – Alan

+0

@Alan, wenn die eingegebenen Daten sind einfach dann lokale Instanz Variablen können sie speichern und auf einen Antrag kann der Server unterstützt mit dieser Variablen in einem Format gebildet werden. – Preson

Antwort

0

in Ihrem UIViewController

var formInfo:NSMutableDictionary = [:] 

in Ihrem cellForRowAtIndexPath Methode gesetzt indexPath als Tag

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

     //... config cell 

     cell.sampleTextView.delegate = self 
     cell.sampleTextView.tag = indexPath.row 

     //because you are use UITableView in dynamic mode textView will lost text in scrolling , 
     if formInfo.objectForKey(textview.tag) != nil { 
      cell.sampleTextView.text = formInfo.objectForKey(textview.tag) as? String 
     } 

    } 

und in Ihrem Textview Delegierten:

func textViewDidChange(textView: UITextView) { 

     formInfo.setObject(textView.text, forKey: textView.tag) 

    } 
Verwandte Themen