其实delegate还是非常厉害的。假如我想创建很多个方法,给全部。m文件使用,总不能在每个。m文件后面加上这一堆代码把。因此为了实现这个功能,我们把这些方法设置在一个delegate那里,然后通过delegate调用他就行了。
看到一个解释的很好的例子。
我上班的工作主要内容包括 (1)写代码(2)写文档(3)测试程序(4)接电话(5)会见客户
(1)(2)我自己全权负责,但是后面(3)(4)(5)我不想或者不方便自己做,所以我想找个助手(delegate)帮我做这些事,于是我定了一个招聘要求(Protocol),里写明我的助手需要会做(3)(4)(5)这三件事。很快,我招到一个助手。
即:我.delegate = 助手;
于是以后每当我遇到需要测试程序或者接电话的活,我就把他转交给助手(delegate)去处理,助手处理完后如果有处理结果(返回值)助手会告诉我,也许我会拿来用。如果不需要或者没有结果,我就接着做下面的事。
这个就是delegate和protocol的意思。
现在我要写一个delegete,我们叫他为pickerview的协议
1.在。h文件里面
@protocol jingweiDelegate //请秘书delegete 执行好protocol规则
@interface ....
@property(nonatomic,assign)id<jingweiDelegate> delegate;
@end
@protocol jingweiDelegate <NSObject>
-(void)dudaoDatePicker:(DudaoDatePicker*)datePicker doneButtonDidPushWithDate(NSDate*)date;
-(void)cancelButtonDidPush;
2.在。m
对方法进行描述
假如要传参数例子如下:
if(_delegate)
[_delegate dudaoDatePicker:self doneButtonDidPushWithDate:date];
3.在调用他的时候的首先要包他的delegate
然后在调用语句如下:
首先创建pickerView,设置delegete为self
此时他会调用delegate的方法
-(void)dudaoDatePicker:(DudaoDatePicker*)datePicker doneButtonDidPushWithDate(NSDate*)date
{
随便写方法。。。
textfield = 与date有关的东西(而date是从那个文件里面拿到的)
}