【问题标题】:Creating a form dynamically in iOS在 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 对象添加到其中。

标签: ios json forms rest


【解决方案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 坐标,对文本字段和其他表单元素也这样做。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-03
      • 1970-01-01
      • 2017-01-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多