如何用两个相同的方法编写委托协议

时间:2012-05-12 12:50:25

标签: iphone ios delegates

我想在按下某个按钮时将一些数据添加到2个不同的实体中,我正在使用委托,但我不知道该怎么做。

@protocol AddContentViewControllerDelegate <NSObject>

- (void)AddContentViewControllerDidCancel:(AddContentViewController *)controller;
- (void)AddContentViewController:(AddContentViewController *)controller didAddPlayer:(FailedBankInfo *)info;
- (void)AddContentViewController:(AddContentViewController *)controller didAddPlayer:(FailedBankDetails *)details;
@end

2 个答案:

答案 0 :(得分:3)

每当您声明协议时,您还必须为相同的

创建委托
id <AddContentViewControllerDelegate > delegateAddContent

并在.m文件中创建其属性ans synthesize

@property (nonatomic) id delegateAddContent

in .m

@synthesize delegateAddContent

现在你必须通过你已经通过.m文件方法定义的协议方法发送数据。

[self delegateAddContent]AddContentViewControllerDidCancel:(AddContentViewController *)controller];

可能有一些类要发送数据。该类必须符合您的协议 e.g - &GT;

@interface ClassName : SuperClass<AddContentViewControllerDelegate >

然后你将不得不实现协议的方法./ 例如 - &gt; -

 (void)AddContentViewControllerDidCancel:(AddContentViewController *)controller
{
//the data will be received in the parameters of the method of the protocol implemented.here in controller
}

符合协议的类也必须采用协议所有权

yourclassconformingprotocol.delegateController =自我。

您还可以通过@required定义协议中所需的方法,并通过@optional

选择

请参阅Apple's documentation on protocol

答案 1 :(得分:2)

只能通过参数类型选择两个不同的方法名称。就编译器而言,协议中第二和第三种方法的名称都是AddContentViewController:didAddPlayer: