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

Gow*_*ham 2 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];
    }
Run Code Online (Sandbox Code Playgroud)

在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];
Run Code Online (Sandbox Code Playgroud)

}

Lef*_*ris 6

绝对没有理由创建具有不同(唯一名称)的文本字段.我很确定你想要这个唯一名称的原因是,你可以在以后的代码中访问它们并编辑它们的值,但是这里有一个技巧:使用唯一的标签号.

这是一个例子:

for (int i=0; i<4; i++) {
    UITextField *myTextfield = [[UITextField alloc] initWithFrame:CGRectZero];
    myTextField.tag = 200+i;
    [self.view addSubview:myTextField];
}
Run Code Online (Sandbox Code Playgroud)

现在我们创建了4个文本字段,其中包含标签200,201,202和203

稍后在我们想要引用第二个文本字段的代码中,我们所要做的就是:

UITextField *myTextField = (UITextField *)[self.view viewWithTag:201];
Run Code Online (Sandbox Code Playgroud)

现在我们有控制权,我们可以得到或设置任何东西......

作为预防措施,我建议您通过使用以下方法检查您是否真正获得了UI元素:

if (!myTextField)
   return;
Run Code Online (Sandbox Code Playgroud)