2010-03-27 4 views
0

UI를 빠르게 조롱하려면 버튼을 인터페이스 빌더의보기로 드래그 한 다음 버튼을 클릭 할 때 표시 할 뷰로 해당 버튼의 연결을 드래그 할 수 있어야합니다.UIButton에 아울렛 추가하기

UIButton의 하위 클래스는 IB에서 사용하기에 약간 불편하므로 UIButton 자체에 동작을 추가하는 것이 좋습니다. 유감 스럽지만 카테고리에서 생성 된 아울렛이 IB에서 보이지 않는 것 같습니다 :

@interface UIButton (myextensions) { 
    IBOutlet UIView *outletDestination; 
} 
@end 

추가 아웃렛을 이런 식으로 추가 할 수 있습니까?

답변

2

이렇게하면 추가 콘센트를 추가 할 수 있습니까?

아니요. 인스턴스 변수는 범주에서 선언하여 추가 할 수 없습니다.

그러나 속성을 추가 할 수 있으며 속성에 IBOutlet을 넣을 수 있습니다. 그렇게하면 콘센트를 추가 할 수 있습니다. iPhone에서 유일하게 사용할 수있는 최신 런타임을 사용하면 속성에서 인스턴스 변수를 추가 할 수 있습니다.

속성에 대한 사용자 지정 액세서 (사용자는 @synthesize를 사용해야 함)를 만들려는 경우이 작업을 수행 할 수 있다고 생각하지 않지만이 경우에는 문제가되지 않습니다. UI이므로 맞춤 접근자를 작성하지 않아도됩니다.

또는 라이브러리 패널의 클래스 탭에서 IB 자체에서 콘센트를 만들 수 있습니다. 그곳에 클래스를 선택한 다음 아래 창에있는 Outlets 탭을 선택한 다음 콘센트를 목록에 추가하십시오.

다른 솔루션에 대해서는 펜촉을 열어야합니다. 그렇지 않으면 클래스가 표시되지 않습니다. 그것은 맥락에 민감하기 때문입니다. Mac 펜촉은 NSButton과 같은 AppKit 클래스를 가지고있는 반면, iPhone 펜촉은 UIKit 클래스를 갖습니다.

+0

@ 속성을 UIButton 범주에 추가하면 범주이므로 @synthesize를 사용할 수 없으며 데이터를 저장하는 ivar가 없으므로 자체 메서드를 작성할 수 없습니다. 콘센트를 만드는 경우 IB에서 "[ setValue : forUndefinedKey :] :이 클래스는 키 대상에 대해 키 값 코딩을 준수하지 않습니다." 나는 위의 모든 것을 UIRoundedRectButton으로 시도했다. – alltom

+0

IB에 아울렛을 추가하는 것은 실제로 조롱하는 데 유용합니다. 실제로 프로그래밍 할 때 머리말에 콘센트를 선언 할 수 있고 선언해야합니다. "나는'@ synthesize'를 사용할 수 없다는 뜻입니까? 시도 할 때 어떻게됩니까? –

+0

죄송합니다. 의견을 보내지 못했습니다. 나는 전자 우편 통지를받은 것 같지 않습니다. @synthesize를 사용할 때의 오류는 다음과 같습니다. "@synthesize는 카테고리의 구현에 허용되지 않습니다." – alltom