2012-03-08 3 views
0

아마도 간단한 질문 일 뿐이지 만 올바른 방법은 없습니다. UITextField 나는이 텍스트 필드 내에 삽입되는 텍스트를 검증 할 필요가 있기 때문에, 나는 현재와 같은 UITextFieldDelegate 방법을 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 사용하고 다음과 같은 : 나는 텍스트 필드를 가지고 있기 때문에다른 UITextField 사이에서 유효성 검사 코드를 공유하십시오

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    // do validation here 
    // return YES or NO depending on previous validation 
} 

(그들은하지 동일한 컨트롤러 곳에 속하는 유효성 검사가 수행됩니다.) 그리고 텍스트 필드 유효성 검사 코드를 복제하고 싶지 않습니다. 비슷한 유효성 검사를 중앙 집중화하는 우아한 방법을 어떻게 얻을 수 있습니까? 서브 클래 싱이 올바른지는 모르지만이 경우 동일한 앱의 다른 부분에서 위와 동일한 위임 방법을 사용해야합니다.

미리 감사드립니다.

답변

2

유효성 검사 코드에 필요한 정보의 양에 따라 다릅니다. textField:shouldChangeCharactersInRange:replacementString:의 인수가 YES 또는 NO를 반환할지 결정해야하는 경우 모든 textField에 대해 동일한 대리자를 사용할 수 있습니다.

유효성 검사를 결정하기 위해 이전 유효성 검사에 대한 정보를 추적하고 저장해야하는 경우 가장 쉬운 방법은 해당 상태를 모두 개체로 패키지화하고 해당 개체의 배열을 각각 특정 UITextField. 그런 다음 textField:shouldChangeCharactersInRange:replacementString:에서 전달 된 textField에 해당하는 상태를 사용합니다.

+0

+1. 하지만 모든 텍스트 필드에 대해 동일한 델리게이트를 사용할 수 있다는 것은 무엇을 의미합니까? * UITextFields *는이를 포함하는 다른 뷰 컨트롤러에 속할 수 있습니다. 고맙습니다. –

+0

나는 무엇을 의미 하는지를 부르며, 무엇을 의미하는지 또 하나 인상한다. 두 개 이상의 UITextField가 서로 다른보기 컨트롤러에있을 수는 없지만 동일한 대리자가있는 이유는 없습니다. 내 말은, – yuji

+0

. * UITextFieldDelegate *를 "구현"(채택)하는 다른 클래스 객체를 생성 한 다음 필요한 각 컨트롤러 내에서 인스턴스화하십시오. 그런 다음 해당 델리게이트를 텍스트 필드에 지정된 것으로 설정하십시오. 맞아? –

관련 문제