如何调用委托对象?

问题描述:

我的协议:如何调用委托对象?

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

我为了处理我rootView控制器内模态视图控制器的设计解雇该协议。我rootView控制器采用这个协议,并声明如下:

#import "ElectricalSystemEngineDelegate.h" 

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

我用一个彻头彻尾的现成:

-(IBAction)displayElectricalViewController 

-to显示模态控制器......工作正常。我,但是,困惑于如何与这个协议来处理控制器解雇的执行进一步进行..

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

很显然,我正确地使用规定的方法实现的协议。我希望该方法在调用时关闭视图控制器。我也希望通过点击modalViewController中的后退按钮来调用它。

正如苹果文档所言:“在某些情况下,对象可能愿意通知其他对象其行为,以便他们可以采取任何可能需要的抵押措施。”我的目标是让我的ElecticalViewController通知它的父级(RootViewController)它应该被解散。应该通过点击后退按钮来触发解雇。对象如何完成此通知?

您需要将id <ElectricalSystemEngineDelegate> delegate属性添加到您的ElectricalViewController。

然后,您需要在创建ElectricalViewController后将自己(RootViewController)分配给该委托。

然后,在处置ElectricalViewController时调用[delegate didRequestMainMenu]。

然后你需要为你的RootViewController创建一个方法didRequestMainMenu。

+0

像梦一样工作。那是我错过的唯一难题。谢谢!! – 2010-02-22 21:16:36