现在的位置: 首页 > 综合 > 正文

自定义Delegate(协议)的实现与继承

2013年07月18日 ⁄ 综合 ⁄ 共 1058字 ⁄ 字号 评论关闭

举个例子,也谈谈我对delegate和protocol的理解。

我上班的工作主要内容包括 (1)写代码(2)写文档(3)测试程序(4)接电话(5)会见客户
(1)(2)我自己全权负责,但是后面(3)(4)(5)我不想或者不方便自己做,所以我想找个助手(delegate)帮我做这些事,于是我定了一个招聘要求(Protocol),里写明我的助手需要会做(3)(4)(5)这三件事。很快,我招到一个助手。

我.delegate = 助手;

于是以后每当我遇到需要测试程序或者接电话的活,我就把他转交给助手(delegate)去处理,助手处理完后如果有处理结果(返回值)助手会告诉我,也许我会拿来用。如果不需要或者没有结果,我就接着做下面的事。。

今天做东西用到了协议,这里在写一下吧

//celltwo类

@interface CellTwo : UITableViewCell {

IBOutlet UIButton *btn;

id delegate;

}

@property (assign) id delegate;

@property (nonatomic,retain) UIButton *btn;

-(IBAction)click:(id)sender;   //按钮响应函数

@end

//协议

@protocol cellItemTwoDelegate

@optional

-(void)onCellItem:(int)index;

@end

这里定义一个类和一个协议,celltwo类里面有一个button。

下面在另外一个类里面要用到celltwo。

@interface AssortController : UIViewController

<cellItemDelegate>{

CellTwo *celltwo;

}

- (void)onCellItem:(int)index{

NSLog(@”onCellItem tag:%d”,index);

}

AssortController使用了cellItemDelegate协议,并且实现了协议里面的函数,然后记得

celltwo.delegate = self;

 

然后当我们点下按钮的时候会调用click,我们在click里面在调用协议定义的函数,

-(IBAction)click:(id)sender{

UIButton *button = (UIButton *)sender;

[delegate onCellItem:button.tag];

}

这样就会打印出来onCellItem tag:%d 这个了, 很简单,类似于C++的重虚函数。

抱歉!评论已关闭.