0

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

我的应用程序 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];
4

2 回答 2

0

尝试使用 UITextField.tag 属性,在不使用数组的情况下调用特定元素。(只需确保标签是唯一的)通过调用

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

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

于 2012-05-14T20:15:27.910 回答
0

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

可能是因为field是零。如果field指向一个真正的 UITextField,你会从field.text. 如果它指向没有text访问器的东西,你就会崩溃。如果我们知道它是如何self.uiElementsForWorkItems产生的以及它包含什么,那将会有所帮助。

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

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

于 2012-05-14T20:16:40.707 回答