如何使用不同的对象名创建动态UITextField?

时间:2012-07-24 11:13:44

标签: ios

我想创建具有不同对象名称的动态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];

}

3 个答案:

答案 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);