2012-05-16 78 views
-1

我有一個名爲setUpArray的可變數組,我想動態生成UITextField。textField的數量必須等於[setUpArray count]。我試過下面的代碼。它工作 生成UITextFields但問題是他們都具有相同的名稱。所以我不能單獨設置個別文本的屬性。按照陣列數創建UITextFields

for(int i=0;i<[setUpArray count];i++) 
{ 
    UITextField *nameTextField=[[UITextField alloc]initWithFrame:CGRectMake(x, y, 60, 40)]; 
    nameTextField.delegate=self; 
    [view addSubview:nameTextField]; 
    y=y+50; 


} 

所以請給我這個問題的解決方案。

+0

什麼你真的想生成標籤或文本框???問題的標題和說明是完全不同的 – HarshIT

+0

你的問題是重複http://stackoverflow.com/questions/1013325/how-to-create-nsmutablearray-of-uilabels – HarshIT

+0

我不認爲。問題在這個問題上有所不同 –

回答

2

您可能希望稍後使用標籤訪問它們。就這樣:

for(int i=0;i<[setUpArray count];i++) { 
    UITextField *nameTextField=[[UITextField alloc]initWithFrame:CGRectMake(x, y, 60, 40)]; 
    nameTextField.delegate=self; 
    [view addSubview:label]; 
    y=y+50; 
    nameTextField.tag = 10 + i; 
} 

訪問它以後:

UITextField *theTextField = [view viewWithTag:12]; //or any other number 

希望它可以幫助

+0

難道你不覺得在使用之後應該刪除textfield嗎??????? – HarshIT

+0

@Hadley你是什麼意思? – Novarg

+0

你分配一個內存多次(等於for循環),但還沒有釋放它.. :( – HarshIT

0

您可以添加:=

nameTextField.tag=i; 

for(int i=0;i<[setUpArray count];i++) 
{ 
    UITextField *nameTextField=[[UITextField alloc]initWithFrame:CGRectMake(x, y, 60, 40)]; 
    nameTextField.delegate=self; 
    nameTextField.tag = i; 
    [view addSubview:nameTextField]; 
    y=y+50; 
} 


and access it using :- 
if(nameTextField.tag==someIntValue) 
{ 
//perform this operation 
}