在iOS中动态创建表单

在iOS中动态创建表单,ios,json,forms,rest,Ios,Json,Forms,Rest,我对iOS一无所知,正在研究一个需要根据服务器端发送的信息动态构建表单的应用程序 我是从服务器端(基于JavaEE)看的,但我想弄清楚iOS端的约束和实践是什么,这些约束和实践决定了我是否应该走这条路 如果发送到iOS应用程序的数据如下所示: [ { "values": "Text Field", "required": "true", "hidden": "true", "readonly": "false",

我对iOS一无所知,正在研究一个需要根据服务器端发送的信息动态构建表单的应用程序

我是从服务器端(基于JavaEE)看的,但我想弄清楚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应用程序创建适当的字段

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


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

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

您将实现诸如
cellforrowatinexpath
numberOfRows
numberOfSections
等方法,为表单中的每个字段创建UITableViewCells

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

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

您将实现诸如
cellforrowatinexpath
numberOfRows
numberOfSections
等方法,为表单中的每个字段创建UITableViewCells

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

我认为我的解决方案不是最好的,但我认为您可以使用一个简单的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;
}
float xCord=20;
浮点数yCord=40;

for(int-loop=0;loop我认为我的解决方案不是最好的,但我认为您可以使用一个简单的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;
}
float xCord=20;
浮点数yCord=40;

对于(int loop=0;loopHint:将
UIScrollView
放在
ViewController
的视图上;然后,向其中添加添加
UITextField
对象。提示:将
UIScrollView
放在
ViewController
的视图上;然后,向其中添加
UITextField
对象。