获取在运行时创建的文本字段的值

时间:2011-08-17 06:55:29

标签: objective-c

按下按钮时我正在构建表单。按下按钮后,将向服务器发送ASIHTTPRequest。这个服务器正在返回一个XML文档,我正在构建一个。

形式

正在构建表单的方法如下所示:

- (void) traverseElement:(TBXMLElement *)element {
    static CGFloat y = 300.0f;
    static CGFloat dynamicHeight = 400.0f;

    do {

    if ([[TBXML elementName:element] isEqualToString:@"wcqQuestionText"]) {
        UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(75, y, 200, 50)];
        label.text = [TBXML textForElement:element];
        [scrollView addSubview:label];
        scrollView.contentSize = CGSizeMake(768, dynamicHeight);
        [formulierText removeFromSuperview];
        [label release];
        y += 50.0f;
        dynamicHeight += 50.0f;

    }

    if([[TBXML elementName:element] isEqualToString:@"wcqAnswerValues"]) {
        NSString *segmentItemsStr = [TBXML textForElement:element];
        NSArray *segmentItemsArray = [segmentItemsStr componentsSeparatedByString:@";"];
        UISegmentedControl *answer = [[UISegmentedControl alloc] initWithItems:segmentItemsArray];            
        answer.frame = CGRectMake(50, y, 400, 40);
        [answer addTarget:self action:@selector(textpopup:) forControlEvents:UIControlEventValueChanged];
        answer.segmentedControlStyle = UISegmentedControlStyleBar;
        [scrollView addSubview:answer];
        scrollView.contentSize = CGSizeMake(768, dynamicHeight);
        [formulierText removeFromSuperview];
        [answer release];
        y += 40.0f;
        dynamicHeight += 40.0f;
    }

    if([[TBXML elementName:element] isEqualToString:@"rayonfiliaal"]) {   
    NSString *rayonFiliaal = [TBXML textForElement:element];
    [stringsArray addObject:rayonFiliaal];

    }

    if([[TBXML elementName:element] isEqualToString:@"filiaal"]) {

    NSString *filiaalNaam = [TBXML textForElement:element];    
    [filiaalArray addObject:filiaalNaam];

    }       
    if ([[TBXML elementName:element] isEqualToString:@"formdata"]) {  
        y = 300.0f;
        dynamicHeight = 400.0f;
    }
    // if the element has child elements, process them
    if (element->firstChild) 
        [self traverseElement:element->firstChild];
    // Obtain next sibling element
} while ((element = element->nextSibling));
}

我想做的是:

如果用户填写表单。我需要将其保存为本地XML文件,其中包含值。 实现这一目标的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以将这些值存储在plist中。

此链接应显示如何创建一个plist。

Property List Programming Guide

您可以使用此方法[label text];

来阅读标签中的每个值

对于分段控件,您将使用以下方法 [answer titleForSegmentAtIndex:index];

这些方法将返回一个NSString,您可以将其存储在NSDictionary中。

获得这些值后,只需创建NSDictionary对象并以原子方式调用[字典writeToFile:pathToDirectory:YES];