我想创建具有不同对象名称的动态UITextField。我已经显示了下面的代码,用于动态创建文本字段。如何创建具有不同对象名称的每个文本字段?
for (int x=0; x < 4 ; x++)
{
CGRect txtFldFrame;
if (x==0)
txtFldFrame=CGRectMake(385, 620, 278, 45);
else
txtFldFrame=CGRectMake(385, txtFldFrame.origin.y+60, 278, 45);
[self createTxtImg:txtImgFrame createTextfield:txtFldFrame];
}
在 createTextfield:(CGRect)txtfldframe {
UITextField *txtFld1=[[UITextField alloc]init];
txtFld1.frame=txtfldframe;
[txtFld1 setTag:textChk];
txtFld1.borderStyle = UITextBorderStyleNone;
txtFld1.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
txtFld1.textAlignment=UITextAlignmentLeft;
txtFld1.textColor=[UIColor colorWithRed:17/255.0 green:61/255.0 blue:83/255.0 alpha:1];
txtFld1.font = [UIFont systemFontOfSize:22];
txtFld1.backgroundColor = [UIColor clearColor];
txtFld1.autocorrectionType = UITextAutocorrectionTypeNo;
txtFld1.returnKeyType = UIReturnKeyDone;
txtFld1.clearButtonMode = UITextFieldViewModeWhileEditing;
txtFld1.autocapitalizationType=UITextAutocapitalizationTypeNone;
txtFld1.delegate = self;
[subScrollView addSubview:txtFld1];
}
答案 0 :(得分:5)
绝对没有理由创建具有不同(唯一名称)的文本字段。 我很确定你想要这个唯一名称的原因是,你可以在以后的代码中访问它们并编辑它们的值,但是这里有一个技巧:使用唯一的标签号。
以下是一个例子:
for (int i=0; i<4; i++) {
UITextField *myTextfield = [[UITextField alloc] initWithFrame:CGRectZero];
myTextField.tag = 200+i;
[self.view addSubview:myTextField];
}
现在我们创建了4个文本字段,其中包含标记200,201,202和203
稍后在我们想要引用第二个文本字段的代码中,我们所要做的就是:
UITextField *myTextField = (UITextField *)[self.view viewWithTag:201];
现在我们有控制权,我们可以得到或设置任何东西......
作为预防措施,我建议您使用以下方法检查您是否真正获得了UI元素:
if (!myTextField)
return;
答案 1 :(得分:0)
使用以下代码创建文本框:
UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(150, 12, 120, 25)];
[self.view addSubview:textField];
对于另一个文本框,只需更改对象名称(textField)
答案 2 :(得分:0)
我不明白一切,因为你没有提供太多信息。
如果要初始化多个UITextField:
UITextField *myTextField1 = [[UITextField alloc] init];
UITextField *myTextField2 = [[UITextField alloc] init];
UITextField *myTextField2 = [[UITextField alloc] init];
依旧......
如果你想在随机或循环的基础上这样做,我建议循环并将对象放入一个字典,其中包含随机键:
NSMutableDictionary *myDict = [NSMutableDictionary dictionary];
for (int i=0; i<20; i++) {
UITextField *myTextfield = [[UITextField alloc] initWithFrame:CGRectZero];
[myDict setObject:myTextfield forKey:[NSString stringWithFormat:@"myTextfield%d", i]];
[myTextfield release];
}
NSLog(@"Dict: %@",myDict);