2014-10-31 62 views
0

根据NSArray的计数,我在我的视图中创建UITextField从动态创建的UITextField中访问文本值。 iOS

我想知道如何根据我的NSArrayUITextField的标记访问文本值。

因此,我将以下UITextField添加到我的视图中后,我将如何编写代码以分别检索myTextfield0,myTextfield1和myTextfield2的.text值?

例子:

NSString *textFeildTextString = [NSString stringWithFormat:@"%@",myTextfield1.text]; 

实际代码:

self.textFieldArray = [NSArray arrayWithObjects:@"one", @"two", @"three",nil]; 

NSMutableDictionary *myDict = [NSMutableDictionary dictionary]; 
for (int i=0; i<[self.textFieldArray count]; i++) { 

    UIView *spacerView1 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 10, 10)]; 
    UITextField *myTextField = [[UITextField alloc]initWithFrame:CGRectMake(20, 60*i+150, 280, 45)]; 
    myTextField.borderStyle = UITextBorderStyleNone; 
    myTextField.font = [UIFont systemFontOfSize:14]; 
    myTextField.returnKeyType = UIReturnKeyDefault; 
    myTextField.placeholder = NSLocalizedString(@"Answer", nil); 
    myTextField.inputAccessoryView = [super createInputToolbar]; 
    myTextField.background = [UIImage imageNamed:@"TextFieldBg"]; 
    myTextField.textColor = [UIColor appTextColorGrey]; 
    [myTextField setLeftView: spacerView1]; 
    myTextField.leftViewMode = UITextFieldViewModeAlways; 
    myTextField.delegate = self; 
    myTextField.tag = 200+i; 
    [myDict setObject:myTextField forKey:[NSString stringWithFormat:@"myTextfield%d", i]]; 
    [self.view addSubview:myTextField]; 
} 

NSLog(@"Dict: %@",myDict); 

我UITexfields的NSLog的

2014-10-31 11:58:32.715 [51992:13536821] Dict: { 
myTextfield0 = "<UITextField: 0x7faea14f8430; frame = (20 150; 280 45); text = ''; clipsToBounds = YES; opaque = NO; tag = 200; layer = <CALayer: 0x7faea14f82d0>>"; 
myTextfield1 = "<UITextField: 0x7faea14fae70; frame = (20 210; 280 45); text = ''; clipsToBounds = YES; opaque = NO; tag = 201; layer = <CALayer: 0x7faea14faca0>>"; 
myTextfield2 = "<UITextField: 0x7faea16dce30; frame = (20 270; 280 45); text = ''; clipsToBounds = YES; opaque = NO; tag = 202; layer = <CALayer: 0x7faea16d19c0>>"; 

}

+0

您正在使用字典,而不是数组,这是一个好方法。 – trojanfoe 2014-10-31 10:18:45

+0

您可以通过myDict枚举textField并获取该值。这应该更简单。对.. – GenieWanted 2014-10-31 10:22:46

+0

我已经在这里回答..可能对某人有帮助。 http://stackoverflow.com/questions/14958613/unable-to-add-text-from-uitextfield-to-an-array/31469632#31469632 – 2015-07-17 06:34:36

回答

2
for (int i=0; i<[self.textFieldArray count]; i++) { 
    UITextField *txt = (UITextField *)[myDict objectForKey:[NSString stringWithFormat:@"myTextfield%d", i]]; 
    NSLog(@"Text %@",txt.text); 
} 
0

您可以通过他们的标签访问他们要么:

UITextField *textField= (UITextField *)[self.view viewWithTag:200]; // Your first text field (201 your second etc..) 
NSString *text = textField.text; 

或通过你的字典里直接访问它们,你已经知道他们中的每一个关键:

UITextField *textField = (UITextField *)[myDict objectForKey:@"myTextField0"]; 

注意,为了使字典呆在身边的声明强烈属性成员的类并将其分配给创建的本地词典(否则会被ARC丢失),所以在方法结束时,你会碰到这样的:

self.myDict = myDict;