Objective-C之代理协议通知程序员

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

上一篇下一篇

猜你喜欢

热点阅读