iOS 代理使用与分析
2016-04-18 本文已影响7347人
超_iOS
最近看了篇讲代理的文章,所以想回顾下代理.另外简书上的代理大多排版不优美,我先把我项目中的稍作修改贴上来.后台接口出问题比较闲,抽个时间小小的写一下.希望对新手有帮助.后续有时间会补充些干货.
实现A类向B类传值:
A类: .h
@protocol TopButDelegate <NSObject>//协议
- (void)transButIndex:(NSInteger)index;//协议方法
@end
@interface AddressBarView : UIView
@property (nonatomic, assign) id<TopButDelegate>delegate;//代理属性
- (void)ClickBut:(UIButton *)sender;//此方法执行时判断协议方法的执行情况
.m
//代理方法, 通过BUT 下标 来滑动视图
- (void)ClickBut:(UIButton *)sender{
if (self.delegate && [self.delegate respondsToSelector:@selector(transButIndex:)]) {
//代理存在且有这个transButIndex:方法
[self.delegate transButIndex:sender.tag - 1000];
}
}
B类:.m
@interface B ()<TopButDelegate>
@property (nonatomic, retain) A * bar; //A类
- (void)viewDidLoad {
self.bar = [[AddressBarView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 40)];
[self.view addSubview: self.bar];
self.bar.delegate = self;//给A类的代理属性给self(B类),这样B就可以执行协议方法啦
[self.bar ClickBut:but];
}
//执行协议方法
- (void)transButIndex:(NSInteger)index
{
self.baseCollection.contentOffset = CGPointMake(index * self.baseCollection.frame.size.width, 0);
}
下边是一篇讲代理比较深入的文章,发现简书上也有,但有抄袭不署名之嫌疑.原文:
http://www.cocoachina.com/ios/20160317/15696.html