0

我正在开发一个应用程序,它需要根据服务器返回的数据动态生成 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];
}

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

谢谢你,网络视频

4

3 回答 3

2

实施< UITextFieldDelegate >。让自己成为txtField. 设置. tag_ txtField然后,当您收到回调时,textFieldDidEndEditing:或者textField:shouldChangeCharactersInRange:replacementString:您可以知道哪个文本字段已更改并对其进行处理。

于 2013-06-04T18:30:51.827 回答
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];
于 2013-06-04T18:31:11.330 回答
0

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

UITextField *textField = [self.view viewWithTag:uniqueTag];
于 2013-06-04T18:29:00.483 回答