自定义Delegate(协议)的实现与继承
2012-08-16 14:58
225 查看
举个例子,也谈谈我对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++的重虚函数。
标签:Objective
相关文章推荐
- 自定义Delegate(协议)的实现与继承
- 自定义Cell上的按钮--delegate协议的实现
- Android使用自定义View继承SurfaceView实现动态折线图的绘制
- 使用SuperSocket实现TLV自定义协议网络通信的Demo
- Mina实现自定义协议的通信
- java下自定义read方法的实现并可以继承
- iOS中自定义delegate的实现
- Swift - 继承UIView实现自定义可视化组件(附记分牌样例)
- JAVA自定义协议实现网页启动应用程序
- 多线程实现方式1:自定义一个类,继承Thread类,并重写run方法。
- ios 继承UIView实现自定义视图——实现画图
- Android进阶——自定义View之继承TextView巧用DrawableLeft实现自己的CheckableTextView
- 基于java实现tcp长链接,自定义消息协议
- 利用prototype属性自定义对象,实现对象继承等面向对象设计
- 自定义适配器的实现继承BaseAdapter
- RecyclerView.ItemAnimator终极解读(三)--继承DefaultItemAnimator实现自定义动画
- 自定义BaseDialog,继承BaseDialog实现自己想要的功能。
- 自定义协议protocol(delegate)传值的步骤
- 移动网络应用开发中,使用 HTTP 协议比起使用 socket 实现基于 TCP 的自定义协议有哪些优势?
- objective C中继承、协议、分类和多态的实现