2012-07-24 70 views
1

我想創建具有不同對象名稱的動態UITextField。我已經在下面顯示了用於動態創建文本字段的代碼。我怎樣才能創建每個文本字段與不同的對象名稱?如何用不同的對象名創建動態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

你是什麼意思是什麼呢?你能提供例子嗎? – Stunner 2012-07-24 11:14:59

+0

你能否讓你的問題更清楚?你的意思是不同的對象名稱? – Mert 2012-07-24 11:15:20

+0

請問您可以對給定的答案發表評論,以便我們知道,我們正在正確的軌道上? – Fab1n 2012-07-24 14:02:06

回答

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; 
0

使用下面的代碼創建文本框:

UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(150, 12, 120, 25)]; 
[self.view addSubview:textField]; 

對於另一個文本框只是改變對象名稱(textField)

0

我不明白一切,因爲你沒有提供太多的信息。

如果要初始化多個UITextFields:如果你想這樣做,在隨機的基礎或循環的基礎上

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