2017-02-22 2 views
-3

Ich erstellte eine Tabellenansicht mit anderen benutzerdefinierten Zelle. Ich habe eine userTableView Klasse, die die Tabellenansicht enthalten, und ich habe auch verschiedene Klassen erstellt, wie ageDataPickerVtableViewCell, die jeweils mit einer xib Datei verbunden sind und eine Zelle in der Tabelle darstellen. Ich bin mir nicht sicher, wie ich die App so gestalten soll, dass ich die Eingabe von den ganzen Zellen bekommen und sie in eine Klasse zusammenfassen kann, um die Anfrage an den Server senden zu können. Wenn zum Beispiel ein Datum auf der dataPicker ausgewählt ist, kann ich mit dem tatsächlichen Design auf das Datum nur auf dem ageDataPickerVtableViewCell zugreifen. Soll ich eine Steckdose für jedes Element der Klasse userTableView erstellen, um auf alle ausgewählten Werte einer Klasse zugreifen zu können?Entwerfen Sie eine Tabelle mit benutzerdefinierten Zellen

+0

https://www.ralfebert.de/tutorials/ios -swift-uitableviewcontroller/gehen Sie einige Tutorials über UITableView durch. Hier habe ich erwähnt, man ist auch ein gutes Tutorial –

+0

Es ist nicht hilfreich. Ich habe mehrere Tabellen erstellt und habe damit kein Problem. Ein Ny-Problem besteht darin, wie Informationen zwischen verschiedenen benutzerdefinierten Zellen ausgetauscht werden. Stellen Sie sich eine Zelle vor, die eine UIPickerView enthält, und eine weitere benutzerdefinierte Zelle, die ein UILabel enthält. Ich möchte den Label-Wert ändern, wenn sich der UIPicker-Wert ändert. Ich könnte die UIlabel class es Delegate für den UIPicker setzen, aber ich bin mir nicht sicher, dass es eine gute Idee ist ... – jana

+0

Sie sollten Ihre Frage auf eine angemessenere Weise dann aktualisieren. 'Design ein TableView mit benutzerdefinierten Zellen' dieser Titel führt zu dem Link, den ich geteilt habe –

Antwort

0

Vielleicht sollten Sie einen Verschluss verwenden. Übergeben Sie diese Schließung an Ihre Zelle, und wenn sie eine Aktion ausführt, rufen Sie diese Schließung auf.

Zum Beispiel in Ihnen geDataPickerVtableViewCell erstellen Sie eine Variable var onDataSelect: (Any) ->(). In der func pickerView(UIPickerView, didSelectRow: Int, inComponent: Int) sollten Sie diese Schließung nennen. (Ich nehme an, Sie verwenden ein UIPickerView)

EDIT

class ageDataPickerVtableViewCell: UITableViewCell, UIPickerViewDelegate { 
    var onDataSelect: ((Any) ->())! 

    // Your code (you have to assign self to picker's delegate in this class) 

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
     let optionSelected = // Retrieve your selection 
     onDataSelect(optionSelected) 
    } 
} 

Und im UITableViewController oder in UITableViewControllerDataSource

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCell(withIdentifier: dataPickerIdentifier) 
     if let cell = cell as? ageDataPickerVtableViewCell { 
      cell.onDataSelect = { data in 
       // Save that data (you can use indexPath to know which field of the form belongs) 
      } 
     } 

     return cell; 
} 
+0

Ich verstehe nicht, was meinst du – jana

+0

Ich aktualisiere nur meine Antwort, ich hoffe, dass es Ihnen hilft –

Verwandte Themen