如何调用委托对象?

时间:2010-02-22 16:16:21

标签: iphone objective-c delegation

我的协议:

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

我设计了这个协议,以便处理我的rootView控制器中的模态View Controller的解雇。我的rootView控制器采用这个协议,声明如下:

#import "ElectricalSystemEngineDelegate.h"

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

我使用的是开箱即​​用的:

-(IBAction)displayElectricalViewController

- 显示模态控制器......工作正常。但是,我对如何进一步执行该协议以处理解雇控制器感到困惑。

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

然后在部署ElectricalViewController时调用[delegate didRequestMainMenu]。

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