在 iOS 中动态创建表单
Posted
技术标签:
【中文标题】在 iOS 中动态创建表单【英文标题】:Creating a form dynamically in iOS 【发布时间】:2013-02-28 04:55:01 【问题描述】:我对 ios 的了解为零,并且正在研究一个需要根据服务器端发送的信息动态构建表单的应用程序。
我正在从服务器端(基于 Java EE)查看它,但想弄清楚 iOS 端的限制和实践决定了我是否应该走这条路。
如果发送到 iOS 应用的数据如下所示:
[
"values": "Text Field",
"required": "true",
"hidden": "true",
"readonly": "false",
"prevalue": "This is text field",
"fieldesc": "First Name"
"mask": "false"
,
"values": "Text Field",
"required": "true",
"hidden": "true",
"readonly": "false",
"prevalue": "01/01/1980",
"fieldesc": "Date Of Birth"
"mask": "false"
,
"values": "Text Field",
"required": "true",
"hidden": "true",
"readonly": "false",
"prevalue": "888 888 888",
"fieldesc": "Tax File Number"
"mask": "true"
,
]
我希望 iOS 应用创建适当的字段。
当字段数量增加时,这可能会变得复杂,我可能不得不将其保存在单独的页面中。
我想听听想法和建议,看看我应该如何处理这个问题。
【问题讨论】:
提示:把UIScrollView
放到ViewController
的视图上;然后,将 UITextField
对象添加到其中。
【参考方案1】:
以UITableViewController
开头。
实现 UITableViewDataSource
和 UITableViewDelegate
委托,这将允许您根据从服务器获取的字段元数据动态创建行。
您将实现 cellForRowAtIndexPath
、numberOfRows
和 numberOfSections
等方法来为表单中的每个字段创建 UITableViewCells。
您将在表格视图的每个单元格中插入UITextField
控件。
最终,您将得到一个可滚动、可编辑的表单,其中包含嵌入在 tableview 中的文本字段。
【讨论】:
【参考方案2】:我认为我的解决方案不会是最好的,但我认为您可以使用简单的 for 循环来实现它。
首先你需要解析整个 JSON,它会给你一个包含 3 个字典的数组。
float xCord = 20;
float yCord = 40;
for (int loop = 0; loop<[parsedJsonArray count]; loop++)
xCord = 20;
//You need to create a label for displaying the description
UILabel *lab = [[UILabel alloc] initWithFrame:CGRectMake(xCord,yCord,100,20)];
lab.text = [[parsedJsonArray objectAtIndex:0] valueForKey:@"fieldesc"];
[self.view addSubview:lab];
xCord = 130;
if ([[[parsedJsonArray objectAtIndex:0] valueForKey:@"values"] isEqualToString:@"Text Field"])
UITextField *tfd = [[UITextField alloc] initWithFrame:CGRectMake(xCord,yCord,100,20)];
tfd.text = [[parsedJsonArray objectAtIndex:0] valueForKey:@"prevalue"];
[self.view addSubview:tfd];
yCord += 35;
您需要根据需要调整 x 和 y 坐标,对文本字段和其他表单元素也这样做。
另一点:如果您需要多个页面,则需要在循环内处理。但我建议最好在其上放置一个滚动视图和其他元素。
【讨论】:
以上是关于在 iOS 中动态创建表单的主要内容,如果未能解决你的问题,请参考以下文章