我正在开发应用程序,客户端询问是否可以构建应用程序,以便应用程序中的表单可以根据需要仅更改Web服务响应进行动态更改。我在PHP中思考类似于变量变量的东西。
[{
"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",
目前,我已经设置了一系列属性以匹配网络服务值,但这不容易扩展,理想情况下,我希望能够动态获取tableview设置网络服务响应
"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": ""
}]
}]
为了更简洁,对于给定的视图控制器,我可以在其中填充大小为n行的UITableView,其中包含未知的自定义单元格数组* - 是否可以创建变量/属性以准确记录数据该UI并将其保存/发送回服务器,在返回Web服务响应时创建数据源的变量?
*表格行数和UITableViewCells类型可以从Web服务中的数据发回和显示
答案 0 :(得分:2)
是的,这不仅是可能的,而且是不可避免的。您将把JSON转换为字典数组,每个字典将在您的自定义单元格中描述UIControl
。将该数组视为表的数据源。
还有一个对象需要来描述一个UIControl,那就是它的值。使字典变为可变(这是解析JSON时的一个选项,“mutableContainers”)并在字典中添加一个额外的密钥,称之为@"value"
。
您制作的自定义单元格将是您动态添加的控件的代理,当他们检测到控件的值发生更改时,他们将更新dictionary[@"value"]
答案 1 :(得分:0)
我喜欢图书馆XLForm这样的事情。
动态创建表单。 您可以在对XLForm rowType
的Web服务响应中的字段类型之间创建1-1映射