2013-06-04 2 views
0

서버에서 반환 된 데이터를 기반으로 UI 구성 요소를 동적으로 생성해야하는 앱을 개발 중입니다. 는 동적으로 코드 예에서 UILabels 등 UITextFields, UIPickerViews를 생성하여 동적 레이아웃을 달성 : 동적으로 생성 된 UITextField에서 데이터를 검색하는 방법은 무엇입니까?

for(int i=0; i < count; i++) 
{ 
    UITextField *txtField = [[UITextField alloc] initWithFrame:CGRectMake(10, 10, 300, 30)]; 
    txtField.placeholder = [@"Test Input" ]; 

    [self.view addSubview:txtField]; 
} 

지금, 내 질문은, i는 사용자가 텍스트 필드에 입력하는 입력을 검색 할 방법에 대해 설명합니다. Coz,이 텍스트 필드를 내 모델 개체의 변수에 매핑하는 방법이 없습니다. 옵션으로 KVO를 고려하고 있지만 실사를 수행하고이를 달성하는 더 간단한 방법이 있는지 확인하고 싶습니다.

는 cybervedaa가 동적으로의 값을 가져 오는 데 사용할 각에 textField에 고유 한 태그를주고 생성 있다면

+4

실제로 정확히 동일한 프레임으로 여러 텍스트 필드를 만드는 것을 의미합니까? –

답변

2

구현 <UITextFieldDelegate>. 자신을 txtField의 대리인으로 지정하십시오. tagtxtField으로 설정하십시오. 그런 다음 textFieldDidEndEditing: 또는 아마도 textField:shouldChangeCharactersInRange:replacementString:으로 콜백을 받으면 어떤 텍스트 필드가 변경되었는지 알 수 있습니다.

+0

@Wain이 제시하는'textFieldDidEndEditing :'메소드를 사용하여 "텍스트 필드를 모델 객체의 변수에 매핑"할 수 있어야한다고 생각합니다. 그런 다음 텍스트 필드에있는 것을 사용해야 할 때마다 모델에서 매핑 한 항목을 살펴보십시오. 최소한이 작업을 수행하는 것이 가장 좋은 방법이라고 확신합니다. – GeneralMike

0

, 감사합니다.

UITextField *textField = [self.view viewWithTag:uniqueTag]; 
2

보기를 참조하려면 어떻게 든 그들을 참조해야합니다. 예를 들어, 인터페이스 빌더를 사용할 때,보기는 IBOutlet으로 지정된 클래스의 특성을 통해 참조됩니다. 이러한 뷰를 루프로 작성하므로 viewWithTag:을 사용하여 각 뷰에 태그를 지정하고 검색하는 것이 좋습니다. 기본 태그가 0 인 다른보기를 조심해서 값을 고유하게 유지하려면 색인을 증가 시키십시오.

for(int i=0; i < count; i++) 
{ 
    UITextField *txtField = [[UITextField alloc] initWithFrame:CGRectMake(10, 10, 300, 30)]; 
    txtField.placeholder = [@"Test Input" ]; 
    txtField.tag = i + 1; 

    [self.view addSubview:txtField]; 
} 

//To retrieve elsewhere 
UITextField *txtField = [self.view viewWithTag:index]; 
관련 문제