在 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 开头。 实现 UITableViewDataSourceUITableViewDelegate 委托,这将允许您根据从服务器获取的字段元数据动态创建行。

您将实现 cellForRowAtIndexPathnumberOfRowsnumberOfSections 等方法来为表单中的每个字段创建 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 中动态创建表单的主要内容,如果未能解决你的问题,请参考以下文章

创建 React 动态表单

在表单组中动态创建formcontrolname

*ngFor 动态创建的表单组件在表单控件中保持价值

AngularJs:如何对指令创建的动态元素应用表单验证

如何创建“动态”表单 - 并在两个字段中存储数据和表单设计

如何在 xamarin 表单中动态创建标签上的点击事件