2013-09-15 3 views
0

Я хочу иметь возможность добавлять от 1 до 20 текстовых полей к моему представлению с тем же кодом.Добавление нескольких текстовых полей с тем же кодом

Моя идея заключается в том, чтобы использовать цикл и каждый раз, добавить текстовое поле, так что первый раз петли это добавляет «textField1» и второй раз он добавляет «поля 2» и т.д.

Я не уверен, как бы я это сделал, поэтому я ищу вашу помощь.

+0

Я на самом деле не пытался что-либо, потому что я не знаю, как это сделать. – Emil

ответ

1

Попробуйте этот код

20 TextFields вы должны принять их в UIScrollView .. вы можете сделать, как это -

UIScrollView *scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0,0,320,460)]; 

[scrollView setDelegate:self]; 

//initialize a textfield array; 

NSMutableArray *textFieldArray = [[NSMutableArray alloc]init]; 

//x, y for first textfield in UIScrollView 

float x = 20; 

float y = 20; 

For(int i=1;i<21;i++) 
{ 
    UITextfield *textField = [[UITextfield alloc]initWithFrame:CGRectMake(x,y,200,30)]; 
    textfield.tag = i; 
    [textField setDelegate:self]; 

    //Add Textfield to array just for futureRefrence 

    [textFieldArray addObject:textField]; 

    //Add textfield in UIScrollView 

    [scrollView addSubview:textField]; 

    //Now iterate Y , So they won't over each other 

    y = y+50; 

} 

//Now set ScrollView ContentSize 

[scrollView setContentSize:CGSizeMake:(320,20*y)]; 

//Now Finally Add ScrollView in UIView 

[self.view addSubView:scrollView]; 

Также помните, что объявили делегат в файле .h. и вы можете получить доступ к этому текстовому полю с помощью массива вы положили их, например

Если вы хотите значение из текстового поля три, вы можете сделать, как этот

UITextfield *textfield = (UITextfield *)[textFieldArray objectAtIndex:2]; 
NSLog(@"text of textField 3 is -- %@",textfield.text); 
+0

Y + = 50; лучше – incmiko

+0

Я просто не хочу путать пользователя. –

1
for (int i = 0; i < 20; i++) 
{ 
    UITextField *textField = //setup field 
    textField.tag = i; 
    [self.view addSubview:textField]; 
} 

тогда, когда вы хотите сослаться на поле позже

UITextField *textField6 = [self.view viewWithTag:6]; 
UITextField *textField18 = [self.view viewWithTag:18]; 
etc 
1
NSMutableArray* tfArray = [[NSMutableArray alloc]init]; 


for (int i = 0; i < 20; i++) 
{ 
    UITextField *textField = [[UITextField alloc]initWithFrame:CGRectMake(x, y, width, height)]; 

    [self.view addSubview:textField]; 
    [tfArray addObject:textField]; 

} 

если вы хотите сослаться поле:

6-й TextField является, например: (UITextField*)tfArray[5];

Смежные вопросы