2012-11-06 6 views
2

매우 초급 obj-c 질문.사용자 정의 UITableView에서 텍스트 필드를 얻는 방법

두 개의 섹션이있는 일반 UITableView가 있지만 지금은 첫 번째 섹션에만 관심이 있습니다. 이 섹션에는 표준 UITableViewCell에서 상속 된 4 개의 사용자 지정 셀이 있으며 UITextField를 속성으로 사용합니다.

"다음", "이전"(tableview의 textField 간 전환) 및 "완료"(키보드 해제) 버튼으로 사용자 정의 입력 액세서리보기를 개선해야합니다. 내가 0 3. 나의 다음 계획에 텍스트 필드 태그를 설정 -textFieldShouldReturn에서 http://uaimage.com/image/62f08045

-viewDidLoad에있는 NSMutableArray에 텍스트 필드를 추가 한 다음 바로 설정하고 텍스트 필드에 대한 첫 번째 응답을 사임하는 것입니다. "다음"버튼에 대한 대략적인 코드를 나열 :

- (void) inputAccessoryViewDidSelectNext:(FDInputAccessoryView *)view { 
    for (UITextField *textField in [self textFieldsArray]) { 

     if ([textField isFirstResponder]) { 

      [textField resignFirstResponder]; 
    UITextField *field = [[self textFieldsArray] objectAtIndex:textField.tag + 1]; 
      [field becomeFirstResponder]; 
     } 

    } 
} 

질문 :

  • 이것이 올바른 방법인가 아니면 문제를 해결하기 위해 더 나은 방법이있다?
  • 텍스트 필드에 태그를 지정하거나 내장 된 셀에 indexPath를 사용해야합니까? (또는 textFields를 추적하는 가장 좋은 점은 무엇입니까?)
  • 그리고 주요 질문 : 셀에서 textField를 가져 오는 구문은 무엇입니까?

멍청한 질문에 사과드립니다. 초보자입니다.

감사합니다. 알렉스.

답변

5

난 당신이 올바른 생각을 가지고 있다고 생각하지만, 몇 가지가 마음에 와서 :

  • 그냥 안전을 위해, 태그 번호 모든 뷰가 태그 번호가 디폴트 값이 0으로 한 0으로 시작하지 않는, 그래서 당신은 예기치 않은 것을 얻을 수 있습니다.
  • textFieldShouldReturn 안에 텍스트보기의 태그를 설정하지 말고 textFields를 초기화 할 때마다 cellForRowAtIndexPath 또는 viewDidLoad에 태그를 설정하십시오.
  • 텍스트 필드를 셀 자체가 아닌 contentView에 추가하십시오.
  • 첫 번째 텍스트 입력란에서 첫 번째 응답자를 사임 할 필요는 없습니다. 새 입력란에서는 단지 becomeFirstResponder 수 있습니다.
  • 마지막 텍스트보기를 처리하는지 확인하십시오. 첫 번째 텍스트 필드로 돌아가거나 단순히 키보드 끝을 닫을 수 있습니다.

당신이 셀에서 텍스트 필드 얻고 싶다면 :

UITableViewCell *cell = [self.tableView cellForRowAtIndexPath: 
         [NSIndexPath indexPathForRow:ROW_NUMBER inSection:1]]; 
UITextField *textField = (UITextField *)[cell.contentView viewWithTag:TEXT_FIELD_TAG]; 
+0

- 셀의있는 contentView에 텍스트 필드 추가를하지 세포 자체. 어떻게해야합니까? 이것은 지금 cell과 textField 사이의 관계를 변화시키는 것입니까? – Alex

+1

'[cell addSubview : textField]'대신'[cell.contentView addSubview : testField]'를 사용하십시오. – johngraham

+0

정말 유용한 답변을 해주셔서 감사합니다! – Alex

관련 문제