将变量设置为“是”'对于使用UIControlEventEditingChanged编辑的每个Textfield

时间:2014-08-21 18:54:57

标签: ios objective-c arrays

我想跟踪已编辑的文本字段。我想将每个编辑过的文本字段存储在变量中。然后,当用户按下“保存”时,按钮它更新数据库中已编辑的文本字段。

我想知道我怎么做,"(void)textChanged:'指定要更改的文本字段,然后将其存储在变量(数组?)中。然后我想从数组中选出已编辑的文本字段名称并执行 - (void)。

实施例:  * testTextfield被编辑。  *添加已编辑的文本域名并将其存储在数组中  *从数组中提取已编辑的文本字段  *使用编辑的文本字段执行 - (Void)

.h文件:

@property (nonatomic, strong) NSMutableArray *allEditedTextfields;

.m文件:

[testTextField addTarget:self action:@selector(textChanged:) forControlEvents:UIControlEventEditingChanged];

在这里,我想确定编辑的文本字段并将其存储在数组中。

 -(void)textChanged:(UITextField *)textField
{
    [allEditedTextfields addObject:textField.text];
}

这是我按下'保存'按钮:

-(IBAction)btnSaveHorse:(id)sender{
    NSLog(@"Array - %@", allEditedTextfields);
}

当我按下保存按钮时,它会显示(数组 - (null))

- (void)textChanged:每次输入新的字母或数字时都会执行。

请帮助我!

1 个答案:

答案 0 :(得分:0)

首先,每次在文本字段中输入内容时,您可能不希望将对象添加到数组中。您可能想要做的是使用NSMutableDictionary存储每个文本字段的值。

您可以使用以下命令在接口文件或代码中为每个文本字段指定唯一的tag

yourObject.tag = 1; //Or whatever

然后,您需要NSMutableDictionary。你必须初始化字典(我假设你没有初始化你的数组,这就是你得到(null)的原因)。

@property (nonatomic, strong) NSMutableDictionary *allEditedTextfields; //.h

allEditedTextfields = [NSMutableDictionary new]; //viewDidLoad of .m

然后,在textChanged:函数中,使用tag作为NSNumber - 包裹布尔值的键,表示您的文本字段已被编辑。这也将确保没有任何重复(如果有任何内容,它将覆盖现有密钥的任何内容):

-(void)textChanged:(UITextField *)textField
{
    [allEditedTextfields setObject:@TRUE forKey:@(textField.tag)];
}

最后,只要您准备好将数据上传到数据库,只需循环浏览字典并使用viewWithTag获取文本字段。

for (NSNumber *key in allEditedTextfields) { //Loop through all keys

    if ([[dict objectForKey:key] boolValue] == TRUE) { //See if it was edited

        UITextField *tField = (UITextField *)[self.view viewWithTag:[key intValue]];
        //save your data using tField.text          
    }
}

[allEditedTextfields removeAllObjects]; //Remove the objects when you're done so it doesn't upload the same ones next time unless they're edited again