代理模式,应该是iOS开发中用使用最多的模式之一,一般用它来传值。最近项目中需要自己写一个第三方,所以就用到它了,谈一谈自己的实现过程。
首先声明一个代理:
@protocol LZQPickerDelegate<NSObject>
- (void)changeTime:(NSDate *)date;
- (void)determinSelected:(NSDate *)date;
@end
@required:必须实现的方法
@optional:可选 实现的方法(可以全部都不实现)
以上就是一个代理的简单声明:@protocol 是声明的关键字,一般输入@protocol就会弹出来,声明很简单,里面的方法默认是@required 如果想要方法选择性实现 写在@optional后面。
然后声明一个id类型的指针,用来指向实现代理方法的类:
@property (nonatomic,assign)id <LZQPickerDelegate>delegate;
一般这么多一个代理差不多就实现了。而后要对代理就是要进行实现。
我要写的是一个UIDatePicker 的的第三方,来讲一下用到代理的部分:
- (void)datePickerChange:(UIDatePicker *)datePicker
{
// 判断delegate 指向的类是否实现协议方法
if ([self.delegate respondsToSelector:@selector(changeTime:)])
{
[_delegate changeTime:datePicker.date];
}
}
如上datePickerChange是UIDatePicker绑定的方法,里面是对代理方法的处理。
很简单的就可以把值从一个页面传递到另一个页面。
下面是Demo的链接,有用的可以下来看看:http://code.cocoachina.com/view/133085