如何在IBAction中读取UITextField值? 我以编程方式创buildUITextField

我如何读取IBAction UITextField值? 我以编程方式创buildUITextField 。 所以我不能使用Xcode设置@property@synthesize 。 生成UITextField的代码如下所示:

 for(i=0; i<[fieldName count]; i++) { UITextField *name = [fieldName objectAtIndex:i]; frame = CGRectMake(fromLeft, fromTop, totalWidth, totalHeight); name = [[[UITextField alloc] initWithFrame:frame] autorelease]; name.borderStyle = UITextBorderStyleRoundedRect; name.returnKeyType = UIReturnKeyDone; //name.placeholder = [fieldName objectAtIndex:i]; name.autocapitalizationType = UITextAutocapitalizationTypeWords; name.adjustsFontSizeToFitWidth = TRUE; name.keyboardType = UIKeyboardTypeDefault; [name addTarget:self action:@selector(doneEditing:) forControlEvents:UIControlEventEditingDidEndOnExit]; [scroller addSubview:name]; fromTop = fromTop + 40; } 

现在我想读一个button点击( IBAction )每个文本框的值。 任何人都可以帮我吗?

你可以使用像这样的东西循环遍历所有UITextFields self.view子视图,并将其文本添加到一个NSMutableArray

 for (UITextField *field in self.view.subviews) { if ([field isKindOfClass:[UITextField class]]) { if ([[field text] length] > 0) { [someMutableArray addObject:field.text]; } } } 

如果你的doneEditing:看起来像这样doneEditing:(id)sender那么你可以说:

 UITextField *field = (UITextField *)sender; NSString *myText = field.text; 

编辑:

要访问UITextField而不设置为实例variables,您需要在创build时标记它:

 [textField setTag:1]; 

那么只要你想访问它,你可以通过标签从它的父视图中获得它:

 UITextField *myTextField = [scroller viewWithTag:1]; NSString *myString = myTextField.text; 

在你的情况下,将标签设置为i+1例如使所有文本字段具有唯一标签。

执行如下的IBAction函数:

 -(IBAction) doneEditing:(UITextField*)sender { NSString * val = sender.text; } 

尝试使用UITextFieldDelegate ,我认为它更适合你的情况。

添加每个UITextField一个标签,并由此您将识别UITextField。

 NSString *value = sender.text; 

如果在IBAction里面,当然。

其中忽略了有一组文本字段和一个button操作。

总体问题的最简单的解决scheme是将一组(或数组)的文本字段存储在一个实例variables中,并迭代该button操作中的该集合。 但这是一个相当粗糙的方法; 使用文本字段委托方法并将文本值直接存储在数组中,使用button触发保存可能会更好。

此外,苹果HIG会告诉你,你应该在编辑文本字段时更新数据模型,而不是使用“保存”button – 这是糟糕的用户体验devise – 当然,除非单个字段的值可以相互影响。