2017-03-14 1 views
0

Ich arbeite an einer App und der Client hat gefragt, ob es möglich wäre, die App so zu gestalten, dass sich die Formulare innerhalb der App dynamisch ändern könnten, wenn nur die Web-Service-Antworten geändert werden müssten. Ich denke etwas ähnlich zu variablen Variablen in PHP.Ist es möglich, Variablen in Ziel c dynamisch zu erstellen?

[{ 
     "field_item_2": "abc", 
     "field_item_3": "123", 
     "field_item_4": "test answer", 
     "field_item_5": "", 
     "field_item_6": 100, 
     "field_item_7": 1, 
     "comments": "Comments go here.", 
     "users": "John Smith, Jane Doe, Tim Johnson", 

Zur Zeit habe ich es Setup mit einer festgelegten Anzahl von Eigenschaften bekam Web-Service-Werte übereinstimmen, aber das wird nicht leicht skalieren und im Idealfall würde Ich mag Lage sein, die Tableview Setup dynamisch auf der Basis zu erhalten Web-Service-Antwort

"complex_data_1": [{ 
     "cd1_format": "textfield", 
     "cd1_format_id": 12, 
     "cd1_question": "What is your favorite color", 
     "cd1_answer": "" 
    }], 
    "complex_data_2": [{ 
     "cd2_format": "textfield", 
     "cd2_format_id": 12, 
     "cd2_question": "What is your favorite car", 
     "cd3_answer": "" 
    }], 
    "complex_data3": [{ 
     "cd3_format": "datePicker", 
     "cd3_format_id": 10, 
     "cd3_question": "What is your birthdate", 
     "cd3_answer": "" 
    }] 
}] 

um zu versuchen, prägnanter zu sein, für einen bestimmten view-Controller, wo ich eine UITableView mit n Zeilen in Größe enthält eine unbekannte Array von benutzerdefinierten Zellen * füllen kann - ist es möglich, Variablen zu erstellen/Eigenschaften, um Daten für diese UI genau aufzuzeichnen und sie auf dem Server zu speichern/senden, wo die Variablen für die Datenquelle erstellt werden, wenn th Die Webservice-Antwort wird zurückgegeben?

* Anzahl der Tabellenzeilen und Art des UITableViewCells kann zurück und angezeigt wird bereits von Daten in Web-Service

Antwort

2

Ja gesendet, ist es nicht nur möglich, es ist eine Art unvermeidlich. Sie werden diesen JSON in ein Array von Wörterbüchern umwandeln, und jedes Wörterbuch beschreibt eine UIControl in Ihrer benutzerdefinierten Zelle. Stellen Sie sich dieses Array als Datenquelle Ihrer Tabelle vor.

Es gibt ein weiteres Objekt erforderlich, um eine UIControl zu beschreiben, und das ist es Wert. Machen Sie das Wörterbuch veränderbar (was eine Option ist, wenn Sie den JSON "mutableContainers" analysieren) und fügen Sie einen zusätzlichen Schlüssel zum Wörterbuch hinzu, z. B. @"value".

Die benutzerdefinierten Zellen, die Sie machen die Delegierten der Kontrollen, die Sie dynamisch hinzufügen, und wenn sie, dass ihre Kontrollen Wert der Änderung erkennen, werden sie die dictionary[@"value"]

0

Ich liebe die Bibliothek XLForm für Dinge wie diese aktualisieren.

Erstellen Sie dynamisch Formulare. Sie könnten eine 1-1-Zuordnung zwischen den Feldtypen in Ihrer Web-Service-Antwort zu XLForm rowType

erstellen
Verwandte Themen