2014-12-29 5 views
0

웹 서비스에서 수신 한 json에 따라 동적으로 UITextFields를 생성해야하는 앱을 만들고 있습니다. 사실 그것은 뷰 구조입니다. 여기에는 텍스트 필드 개체의 좌표와 세부 정보가 들어 있습니다. 미리 정의 된 수의 텍스트 필드를 사용하여 구조체를 생성하고 있습니다.동적으로 UITextFields를 생성합니다.

for (int i=0; i<[textFieldsArray count];i++) { 

    NSDictionary *textFieldDict = [textFieldsArray objectAtIndex:i]; 

    switch (i+1) { 
     case 1: 
      textField1 = [[UITextField alloc]init]; 
      textField1.tag = i+1; 
      textField1.text = [textFieldDict valueForKey:@"text"]; 
      textField1.frame = CGRectMake(posx,posy,textWidth,textHeight); 
      [textField1 addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventTouchDown]; 
      [self.imageView addSubview:textField1]; 
      break; 
     case 2: 
      textField2 = [[UITextField alloc]init]; 
      textField2.tag = i+1; 
      textField2.text = [textFieldDict valueForKey:@"text"]; 
      textField2.frame = CGRectMake(posx,posy,textWidth,textHeight); 
      [self.imageView addSubview:textField2]; 
      [textField2 addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventTouchDown]; 
      break; 
     case 3: 
      textField3 = [[UITextField alloc]init]; 
      textField3.tag = i+1; 
      textField3.text = [textFieldDict valueForKey:@"text"]; 
      textField3.frame = CGRectMake(posx,posy,textWidth,textHeight); 
      [self.imageView addSubview:textField3]; 
      [textField3 addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventTouchDown]; 
      break; 

     default: 
      break; 
    } 


} 

무한한 텍스트 필드로 확장하고 싶습니다. 텍스트 필드를 동적으로 생성하는 방법이 있습니까?

+1

. 당신이 묻는 것은 변수에 대한 것입니다 - 개별 UItextField 변수가 아닌 NSMutableArray에 텍스트 필드 참조를 저장할 수 있습니다. – Paulw11

+0

@ Paulw11 동적으로 텍스트 필드 배열을 생성 할 수 있습니까? 나는 동적으로 텍스트 필드를 명명하는 데 어려움을 겪고있다. 우리는 런타임에 변수 이름을 동적으로 생성 할 수 없다는 소식을 들었습니다. – Susitha

+1

http://stackoverflow.com/questions/4304358/how-to-create-uitextfield-dynamically-using-for-loop보세요. – Sport

답변

3

당신은 다음과 같이 작성해야합니다 :

for (int i=0; i<[textFieldsArray count];i++) { 

    NSDictionary *textFieldDict = [textFieldsArray objectAtIndex:i]; 
    UITextField *textField = [[UITextField alloc]init]; 
    textField.tag = i+1; 
    textField.text = [textFieldDict valueForKey:@"text"]; 
    textField.frame = CGRectMake(posx,posy,textWidth,textHeight); 
    [textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventTouchDown]; 
    [self.imageView addSubview:textField]; 
} 

당신은 아래의 코드를 사용하여 텍스트 필드를 얻을 수 있습니다 : 당신은 동적 텍스트 필드를 만들

UITextField *textField = (UITextField *)[self.imageView viewWithTag:1]; 
관련 문제