在iOS中使用JSON创建动态表单

3

我需要使用JSON创建一个动态表单。我已经解析了JSON,但我不知道如何动态地创建表单。请建议一些代码或教程。

[
    {
        "cssClass": "head"
    },
    {
        "cssClass": "input_text",
        "values": "Text Field",
        "fieldsize": "small",
        "required": "undefined",
        "prevalue": "This is text field",
        "autocaps": "none",
        "fieldesc": "text field description"
    },
    {
        "cssClass": "number",
        "values": "Number ",
        "fieldsize": "small",
        "required": "required",
        "prevalue": "This is Number Field",
        "autocaps": "capitalize",
        "fieldesc": "number field description"
    },
    {
        "cssClass": "email",
        "values": "Email",
        "fieldsize": "small",
        "required": "required",
        "prevalue": "This is email field",
        "autocaps": "none",
        "fieldesc": "email field description"
    },
    {
        "cssClass": "password",
        "values": "Password",
        "fieldsize": "small",
        "required": "required",
        "prevalue": "password",
        "autocaps": "none",
        "fieldesc": "password field description"
    },
    {
        "cssClass": "date",
        "values": "Date",
        "fieldsize": "medium",
        "required": "required",
        "prevalue": "datefield",
        "autocaps": "uppercase",
        "fieldesc": "date field description"
    },
    {
        "cssClass": "time",
        "values": "Time",
        "fieldsize": "small",
        "required": "undefined",
        "prevalue": "time field",
        "autocaps": "uppercase",
        "fieldesc": "time field description"
    }
]

创建一个类文件,包含所有字段,并将它们存储在NSArray中,一旦从WS获取数据,将其传递给表视图并重新加载数据。 - P.J
你能提供一些相关链接或示例代码吗? - user1190239
1个回答

1

首先,您需要将JSON解析为字典,然后使用每个字典条目实例化自定义对象:

@interface FormItem : NSObject

@property (nonatomic, retain) NSString * cssClass;
@property (nonatomic, retain) NSString * values;
//etc

+(id)initWithDictionary:(NSDictionary*)dictionary;

@end

@implementation FormItem

+(id)initWithDictionary:(NSDictionary*)dictionary {
    if (self = [super init]) {
        _cssClass = [dictionary valueForKey:@"cssClass"];
        //etc
    }
}

@end

一旦您在视图控制器中拥有了NSArray中的这些对象,例如self.formItems,您将使用该列表来绑定tableView。在cellForRowAtIndexPath:中,您将想要提取该项:

FormItem *currentItem = self.formItems[indexPath.row];

在那时,您将需要动态创建UITextField或其他所需控件,并将它们添加到表格单元中:
if ([currentItem.values isEqualToString:@"Text Field"] {
    UITextField *text = [[UITextField alloc] init...];
    //setup
    [cell.contentView addSubview:text];
}

你可以将这些内容抽象到你的FormItem类中,但这是一种快速的方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接