如何在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 – 当然,除非单个字段的值可以相互影响。