2012-01-23 4 views
0

입력이 흰색이고 빨간색 배경 인 입력 기호가 있습니다. 각 UITextField에 대해 오류가있는 배경을 수동으로 변경하는 대신 UITextField을 확장하고 추가 기능을 추가하거나 이 더 좋으므로 방법이 있습니까?ios UITextField 확장 (하위 클래스)

또한 사용자 정의 UITextField을 사용하는 경우 해당 방법을 사용합니까 Interface Builder에 있습니까?

답변

6

귀하의 기능을 구현하는 UITextField 서브 클래스를 생성하십시오. 그런 다음 Interface Builder에서 UITextField를 뷰에 드래그 할 때마다 Inspector에서 해당 클래스를 UITextField 서브 클래스로 설정하십시오.

IB에서 일반 UITextField처럼 구성 할 수 있으며 IB에서 다르게 보이지는 않지만 앱이 실행되면 사용자 정의 배경색이됩니다.

인터페이스 빌더에서 사용할 텍스트 필드를 서브 클래 싱하는 경우 initWithFrame 메소드 대신 initWithCoder 또는 awakeFromNib 메소드를 구현해야합니다. 그렇지 않으면 사용자 정의 설치 코드가 생성 될 때 실행되지 않습니다. 펜촉.

또한 IB에서 하위 클래스의 사용자 지정 속성을 설정할 수 없으므로 빨간색 텍스트 필드와 파란색 텍스트 필드가 필요한 경우 사용할 경우 두 개의 개별 하위 클래스를 만들어야합니다 코드에서 해당 속성을 설정할 필요없이 IB에서 사용할 수 있습니다.

업데이트 : IB에서 사용자 지정 속성을 설정할 수 없다는 사실은 더 이상 사실이 아닙니다. 이제 Inspector에서 User Defined Runtime Attributes 패널을 사용할 수 있습니다.

+0

사용자 정의 런타임 속성을 사용하면 코드없이 iOS 5를 타겟팅하는 등 몇 가지 속성을 설정할 수 있습니다. 또한 실제 유효성 검사를 수행하려면 NSFormatter를 살펴보십시오. –

+0

@NickLockwood'UITextField'와 같은 것을 서브 클래 싱 할 때 무엇이 ​​초기화 된 함수 (생성자라고도 함)입니까? – Jacksonkr

+1

내가 말했듯이 Interface Builder를 사용하여 initWithCoder를 만들지 만 awakeFromNib를 대신 사용할 수 있습니다. awakeFromNib는 init 메소드 다음에 호출됩니다. –

관련 문제