2010-02-22 6 views
0

내 프로토콜 :델리게이트 객체는 어떻게 호출됩니까?

@protocol ElectricalSystemEngineDelegate 
-(void)didRequestMainMenu:(id)sender; 
@end 

나는 나의 rootView 컨트롤러 내부 모달보기 컨트롤러의 해임을 처리하기 위해이 프로토콜을 설계했습니다. 내 rootView 컨트롤러는이 프로토콜을 채택하고 다음과 같이 선언한다 :

-(IBAction)displayElectricalViewController 

모달 컨트롤러 ... 잘 작동 표시 -to :

#import "ElectricalSystemEngineDelegate.h" 

@interface RootViewController: UIViewController <ElectricalSystemEngineDelegate> 
//other ivars & methods including instantiation of my modalViewController. 

내가 아웃 - 오브 - 박스를 사용합니다. I는, 그러나, 분명히 .. 제어기 기각을 처리하기 위해이 프로토콜의 구현을 더 진행하는 방법

//The implementation of my root view controller. 
-(void)didRequestMainMenu:(id)sender { 
    [self dismissModalViewControllerAnimated: YES]; 
} 

혼란하고, I은 정확하게 소정의 방법을 사용하여 프로토콜을 구현 하였다. 메서드를 호출하면 내 View Controller를 닫을 수 있습니다. 또한 modalViewController에서 뒤로 버튼을 탭하여 호출되도록하고 싶습니다.

애플 문서에서 "어떤 경우에는 객체가 다른 객체에 작업을 알리므로 필요한 부수적 인 조치를 취할 수 있습니다." 내 목표는 내 ElecticalViewController가 부모 (RootViewController)에게 해산되어야 함을 알리는 것입니다. 그 해고는 뒤로 버튼을 가볍게 두 드려야합니다. 객체가이 통지를 어떻게 처리합니까?

답변

2

id <ElectricalSystemEngineDelegate> delegate 속성을 ElectricalViewController에 추가해야합니다.

그런 다음 ElectricalViewController를 만든 후에 자체 (RootViewController)를 해당 대리인에게 할당해야합니다.

그러면 ElectricalViewController를 처리 할 때 [delegate didRequestMainMenu]를 호출합니다.

그런 다음 RootViewController에 didRequestMainMenu 메소드를 만들어야합니다.

+0

꿈처럼 일했습니다. 그것이 내가 놓친 유일한 퍼즐 조각이었습니다. 감사!! –