2011-03-20 5 views
1

사용자로부터 로그인 정보를 얻기 위해 모달로 표시하는보기가 있습니다. 나는 다음과 같은 설정을 가지고 : 사용자 이름 및 암호 필드와 로그인 버튼과 하나의 간단한 세포 (유형 UITableViewCellUITextField 모두) :보기를 닫기 전에 UITextField에서 최신 값을 읽는 중 문제가 발생했습니다.

  • 뷰 컨트롤러 표는 3 개 개의 셀이있는 UITableViewController
  • 입니다.
  • 값은 textFieldDidEndEditing: 메시지
  • 에서 읽습니다. 텍스트 필드는 다른 태그 값으로 식별됩니다.

문제

내 문제는 초점이 UITextField에 있고 사용자가 로그인 버튼을 터치 할 때, 각각의 UITextFieldtextFieldDidEndEditing: 메시지가didSelectRowAtIndexPath:를 전송한다는 것입니다. 이제 여기서 문제는 새로운 사용자 자격 증명에 대한 메시지를 LoginViewControllerDelegatedidSelectRowAtIndexPath:에 보내고 텍스트 필드의 값을 아직 읽지 못했다는 것입니다.

일부 아이디어는

나는 어떻게이 문제를 해결하는 몇 가지 아이디어를 가지고,하지만 난 그들 각각의 합병증이있다.

먼저 로그인보기를 닫고 닫는 동안 대리인에게 알림을 보내지 만 위임자 (이 로그인보기를 소유 한 사람)에게 모든 권한을 부여하려는 경우 대리인의 작업으로 회의록을 닫아야한다고 생각합니다. 성공적인 로그인에 대한 로그인보기 (로그인보기는 자격 증명 만 읽으며 대리인은 자격 증명을 확인합니다).

둘째, 위임자를 호출하기 전에 사용자 이름이나 암호를 읽을 수도 있지만 텍스트 필드를 찾아야합니다. 뷰가 표시되지 않으면 셀이 존재한다고 가정하는 것이 잘못된 것입니다. 이것은 단지 큰 일이지만, 나는 그것을 옳게 만들지 않을 것입니다. UITextField을 보유해도 괜찮습니까? 그러나이 방법은 텍스트 필드를 제공하는 사용자 지정 셀을 사용할 수 없습니다. (유효) 사용자 자격 증명에 대한

  1. 필요가 발견, 로그인 뷰가
  2. 사용자는 사용자 이름과 암호를 입력하고 완료를 호출합니다 팝업됩니다 :

    는 기본적으로 나는 다음과 같은합니다.

  3. 대리인이 이러한 자격 증명의 유효성을 검사합니다. 작동하지 않으면 메시지가 표시되고 2 단계를 다시 시도하십시오.
  4. 인증 정보는 정상이므로 로그인보기를 닫고 계속하십시오.

답변

1

모든 트릭을 마친 직후, 대표자를 호출하기 전에 첫 번째 응답자를 단순히 사임하면 해결할 수 있다고 생각했습니다.테이블 뷰 컨트롤러에서 나는 단순히 호출을 추가했다 :

[[self.view findFirstResonder] resignFirstResponder]; 

findFirstResonder이 범주에서하고 here를 찾을 수 있습니다.

0

세 번째 셀을 로그인 버튼 대신 사용하십시오. 로그인보기에서 간단한 버튼을 사용하십시오. 해당 버튼의 IBAction에서 사용자 입력의 유효성을 검사 할 수 있습니다.

+0

좋아, 시도해 보았습니다. 그것은 버튼의 대상 작업이 텍스트 필드의 값을 읽는'textFieldDidEndEditing :'전에 여전히 실행되는 것 같습니다. – mkko

0

두 개의 텍스트 필드와 하나의 UIButton이있는 간단한보기를 사용할 수 있습니다. 버튼을 누르면 슈퍼 뷰에서 뷰를 제거 할 수 있습니다 [yourView removeFromSuperview]. yourTextfield.text에서 데이터를 수신 할 수 있습니다.

이 트릭을 수행해야합니다.

+0

나는 꽤 이해하지 못했다. 나는 이것을 위해 테이블 ​​뷰를 사용하고 싶었고, 오버레이 (즉, 팝업 로그인 대화 상자)가 델리게이트가 그렇게 말하기 전에 기각되기를 원하지 않는다. – mkko

관련 문제