다음과 같은 사실을 명심하십시오 : 인터페이스 빌더가보기 하위 클래스가 방출 할 사용자 정의 이벤트를 연결하기 위해 Interface Builder에 제공하고 싶습니다 (Button 컨트롤을 사용하여 Touch Inside 등을 연결할 수 있음).
이 기능이 필요한 경우 프로토콜과 결합 된보기에서 일반화 된 '대리인'속성을 사용해야합니다.
@protocol RadioDialDelegate
-(void)dialValueChanged:(id)sender
@end
@interface RadioDial
{
id<RadioDialDelegate> radioDelegate;
}
@property (nonatomic, assign) IBOutlet id<RadioDialDelegate> radioDelegate;
이 컨트롤러가 (이 RadioDialDelegate를 구현 가정)보기로 묶을하고 뷰에서 나오는 이벤트를받을 수 있습니다. 또는 형식이 지정되지 않은 대리자를 사용할 수 있으며보기 코드에서 늦은 전화를 사용하십시오.
if([radioDelegate respondsToSelector:@selector(dialValueChanged:)]) {
[radioDelegate dialValueChanged:self];
}
예, 정확히 그 의미입니다. 그리고 내가 겪고있는 문제는 내 뷰 하위 클래스에 대한 사용자 지정 이벤트를 만드는 것입니다. 실제 상황은 클래스에서 - (void) touches 특정 조건에서 움직 였고 화재와 이벤트를 원했고 해당 이벤트를 IB를 통해 IBActions에 연결할 수 있기를 바랍니다. –
나는 어떻게 대답했는지 나의 대답을 편집했다. 이를 수행하려면 위임/프로토콜 패턴을 활용해야합니다. IB는 컨트롤러에 할당 된 속성으로 위임자를 노출합니다 (IB에서 컨트롤러 클래스를 올바르게 설정해야 함) 컨트롤러가 프로토콜을 구현해야합니다. – Jason
일종의 의미가 있습니다 (전체 Objective-C/Cocoa에 상당히 익숙 함), 어떻게하면 각 RadioDial의 값 변경 이벤트를 뷰 컨트롤러의 다른 메서드로 연결시킬 수 있습니까? 동일한 방법을 사용하고 발신자 참조를 확인할 수 있다는 것을 알고 있지만 그 유일한 방법입니까? –