自定义Delegate(协议)的实现与继承
2014-09-02 16:11
176 查看
举个例子,也谈谈我对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++的重虚函数。
相关文章推荐
- 自定义Delegate(协议)的实现与继承
- 自定义Cell上的按钮--delegate协议的实现
- 利用IFRAME 让每个页面都继承菜单控 不是用户自定义控件来实现的
- IE浏览器 自定义地址协议的实现
- 自定义协议protocol(delegate)传值的步骤
- 利用prototype属性自定义对象,实现对象继承等面向对象设计
- 如何实现自定义的URL协议
- Mina实现自定义协议的通信
- 继承QToolButon实现Qt自定义按钮遇到的事件问题
- 在自定义的delegate实现中注意 判断delegate有没有实现响应的@protocol方法
- Mina实现自定义协议的通信
- DELPHI实现通过URL触发自定义协议的软件
- QTableWidget 实现自定义代理(delegate)
- 自定义协议或实现委托
- java下自定义read方法的实现并可以继承
- 如何自定义一个Remoting中Sink对象实现特定协议上的消息转发
- C++ GUI Programming with Qt 4 - 10.4 实现自定义代理(delegate)
- iphone--protocol协议实现多继承
- 用socket自定义简单协议实现文件上传与接受
- 移动网络应用开发中,使用 HTTP 协议比起使用 socket 实现基于 TCP 的自定义协议有哪些优势?