1

我对 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 应用程序创建适当的字段。

当字段数量增加时,这可能会变得复杂,我可能不得不保留在单独的页面中。

我想听听想法和建议,看看我应该如何处理这个问题。

4

2 回答 2

3

UITableViewController. 实现UITableViewDataSourceUITableViewDelegate委托,这将允许您根据从服务器获取的字段元数据动态创建行。

您将实现和为表单中的每个字段创建 UITableViewCells 之类cellForRowAtIndexPath的方法。numberOfRowsnumberOfSections

您将UITextField在表格视图的每个单元格中插入控件。最终,您将得到一个可滚动、可编辑的表单,其中包含嵌入在 tableview 中的文本字段。

于 2013-02-28T05:11:07.350 回答
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 坐标,也对文本字段和其他表单元素执行相同操作。

另一点:如果您需要多个页面,则需要在循环内处理。但我建议最好在上面放置一个滚动视图和其他元素。

于 2013-02-28T05:28:23.277 回答