iOS Developer

iOS 代理浅谈

2016-10-10  本文已影响0人  路小白同学

代理模式,应该是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

上一篇下一篇

猜你喜欢

热点阅读