我正在开发一个应用程序,它需要根据服务器返回的数据动态生成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
答案 0 :(得分:2)
实施< UITextFieldDelegate >
。让自己成为txtField
的代表。设置tag
的{{1}}。然后,当您收到txtField
或textFieldDidEndEditing:
的回调时,您可以判断哪个文本字段已更改并对其执行某些操作。
答案 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];