2011-03-18 3 views
0

내부에 텍스트 필드가있는 경고보기가 있습니다.일부 경고를 제거해야합니다.

UIAlertView *myAlert = [[UIAlertView alloc] initWithTitle:@"Password" message:nil delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Enter", nil]; 
[myAlert addTextFieldWithValue:nil label:@"Type Password"]; 
[[myAlert textField] setSecureTextEntry:YES]; 
[[myAlert textField] setDelegate:self]; 
[[myAlert textField] setTextAlignment:UITextAlignmentCenter]; 
[[myAlert textField] becomeFirstResponder]; 
[myAlert show]; 
[myAlert release]; 
myAlert = nil; 

내가 [[myAlert textField]을 포함하는 라인에 4 명 경고, 각을 얻을 : 여기에 코드입니다. 내가 얻을 수있는 경고는 "-addTextFieldWithValue:label: (반환 유형 기본값은 'id')"및 "Method '-textField'을 찾을 수 없습니다 (반환 유형 기본값은 'id')입니다." 이 문제를 해결하려면 어떻게해야합니까? 아무런 경고없이 경고보기 내에 텍스트 필드를 표시하는 더 좋은 방법이 있습니까?

답변

4

경고의 이유는 UIAlertView 클래스에 addTextFieldWithValue 또는 textField과 같은 메서드가 없다는 것입니다.

일반적으로 경고보기는 몇 가지 기본 옵션 ("예/아니요", "확인/취소"등) 중에서 선택을 허용하는 것 이외에는 입력을위한 것이 아닙니다. 사용자가 암호를 입력해야하는 경우 텍스트 필드는 일반보기의 어딘가에 있어야합니다. 이것은 정확히 당신이 후속하는 방법이 UIAlertView에 구현되지 않은 이유입니다. 참고로

: UIAlertView

+1

@Preston : 당신은 @Mac이 의미하지만, 명시 적으로 말을하지 않는 것입니다 UIAlertView에 문서화되지 않은 속성과 메서드를 사용하고 있습니다. 실제로 작동하지만 Apple에서 사용하기에 앱을 거부 할 가능성이 있습니다. (사용중인 공용 헤더에 포함되어 있지 않으므로 경고가 표시되므로 컴파일러에서 플래그로 표시합니다. 실제 개체는 아마도 이러한 것들을 지원하기 때문에 런타임에 폭발하지 않습니다.) –

+0

@quixoto : +1 그리고 코멘트 주셔서 감사합니다 - 나는 그 방법이 실제로 존재하지만 문서화되지 않았다는 것을 전혀 몰랐습니다! 매일 새로운 것을 배우십시오 :) 또한, 이러한 기술을 응용 프로그램 거부의 원인으로 사용하는 것에 대한 좋은 지적이 있습니다. 문서화되지 않은 API를 사용하면 앱의 유지 보수 및 디버깅이 훨씬 어려워집니다 (질문에서 볼 수 있듯이). @Preston : 간단한 메시지 : 가능한 경우 비정상적인 방법으로 일을 피하십시오! – Mac

관련 문제