Xcode:如何从以编程方式添加的ui元素中提取数据?

时间:2012-05-14 19:58:12

标签: xcode uitextfield

我希望我能在一个小问题上得到一些帮助。

我的应用程序UI的一部分是动态的,所以我以编程方式添加UI元素,然后存储在NSMutableArray中。我有两个问题:

1)当我尝试执行以下操作时,为什么会得到空值?

UITextField* field = [self.uiElementsForWorkItems objectAtIndex:i];
NSLog(@"title: %@", field.text);

如果这些是有价值的副本而不是引用,为什么我能够成功调用它们的removeFromSuperview?

2)如何从以编程方式添加的UI元素(即UITextField.text值)中检索值,并且有一种方法可以让我识别它是哪个元素?

我已经看到了以下解决方案,但它没有提供访问元素数据或识别它的方法:

[title addTarget:self action:@selector(handlerMethod) forControlEvents:UIControlEventEditingDidEnd];

2 个答案:

答案 0 :(得分:0)

尝试使用UITextField.tag属性,在不使用数组的情况下调用特定元素。 (通过调用

确保标记是唯一的)

UITextField *field = (UITextField *)[self viewWithTag: tagValue];

尝试使用UITextField委托方法。大多数情况下,您可以使用代理和标签进行管理。

答案 1 :(得分:0)

  

为什么在尝试执行以下操作时会获得空值?

可能是因为field是零。如果field指向真正的UITextField,则会从​​field.text获得一个(可能为空)字符串。如果它指向没有text访问者的东西,那么你就会崩溃。如果我们知道self.uiElementsForWorkItems是如何形成的以及它包含的内容,它会有所帮助。

  

如何从以编程方式添加的UI元素中检索值

与任何其他UI元素相同:您向其发送一条消息,询问您想要的数据。为了发送消息,您需要一个指向该对象的指针。如果您以编程方式创建这些UI对象,则需要在创建每个对象时保留对每个对象的引用(类似于IBOutlet),或者为自己提供一种在以后查找对象的方法,例如分配唯一对象值为tag属性。