Brand new to coding; been utilizing stackoverflow religiously for months; first time asking a question; please be gentle.
I’m trying to create a series of UITextFields programmatically using a for loop. The fields should have names like “pax1name”, “pax2name”, “pax3name”, etc.
The piece I’m missing is how to take a string and make it the name of a textField, changing the name of the textField each time the for-loop executes.
Here’s my code, but maybe I’m going about this the wrong way? Thank you in advance!
// set up the names textfields
for (int i = 0; i < 7; i++) {
NSString *fieldName = [[NSString alloc] initWithFormat:@"pax%iname", (i + 1)];
// I can't figure out what goes here to create a UITextField with the name of fieldName
textField = [[UITextField alloc] initWithFrame:CGRectMake(15, (15 + (i * 40)), 400, 40)];
textField.borderStyle = UITextBorderStyleRoundedRect;
textField.font = [UIFont systemFontOfSize:15.0];
textField.autocorrectionType = UITextAutocorrectionTypeNo;
textField.clearButtonMode = UITextFieldViewModeWhileEditing;
textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
[namesViewController addSubview: textField];
[fieldName release];
[textField release];
}
Normally you use the UIView property
tagfor that. Use[textField setTag:<youCustomTag>]in your loop to set the value, e.g. your variablei. Please note thattagexpect an NSUInteger and not an NSString.To access the correct text field afterwards you’d call
[[namesViewController view] viewWithTag:<yourCustomTag>].BUT, is it really necessary to create multiple text fields for your view controller? There might be a more elegant solution by creating just one single text field and setting the tag-property on demand when the user taps a row. I don’t know if that would work for you.