如何从动态生成的UITextField中检索数据?

时间:2013-06-04 18:27:08

标签: ios objective-c dynamic views

我正在开发一个应用程序,它需要根据服务器返回的数据动态生成UI组件。 我通过在代码中动态生成UILabels,UITextFields,UIPickerViews等来实现动态布局 例如:

for(int i=0; i < count; i++)
{
    UITextField *txtField = [[UITextField alloc] initWithFrame:CGRectMake(10, 10, 300, 30)];
    txtField.placeholder = [@"Test Input" ];

    [self.view addSubview:txtField];
}

现在,我的问题是,如何检索用户在文本字段中输入的输入。 Coz,我没有办法将这个文本字段映射到我的模型对象中的变量。 我正在考虑将KVO作为一种选择,但我希望尽职尽责并检查是否有更直接的方法来实现这一目标。

谢谢你, cybervedaa

3 个答案:

答案 0 :(得分:2)

实施< UITextFieldDelegate >。让自己成为txtField的代表。设置tag的{​​{1}}。然后,当您收到txtFieldtextFieldDidEndEditing:的回调时,您可以判断哪个文本字段已更改并对其执行某些操作。

答案 1 :(得分:2)

要引用视图,您需要以某种方式引用它们。例如,使用界面构建器时,视图是通过使用IBOutlet指定的类的属性引用的。由于您是在循环中创建这些视图,因此我建议您使用viewWithTag:标记每个视图并检索它们。请注意默认标记为0的其他视图,因此请增加索引以使值保持唯一。

for(int i=0; i < count; i++)
{
    UITextField *txtField = [[UITextField alloc] initWithFrame:CGRectMake(10, 10, 300, 30)];
    txtField.placeholder = [@"Test Input" ];
    txtField.tag = i + 1;

    [self.view addSubview:txtField];
}

//To retrieve elsewhere
UITextField *txtField = [self.view viewWithTag:index];

答案 2 :(得分:0)

如果它是动态生成的,则为每个textField提供一个唯一标记,然后使用它从中获取值。

UITextField *textField = [self.view viewWithTag:uniqueTag];