代理:如何写一个代理

来源:互联网 发布:汽车维保数据 违法 编辑:程序博客网 时间:2024/05/02 04:42
写一个代理重点:1、协议最好实现根协议2、代理方法设置位id,这样任何类型都可以第二次总结1、首先写一个协议,这个写在类的声明里(就是JAVA的先写好一个接口interface),协议实现根协议注意:1、协议名就死控件名加上Delegate 2、方法上我们加上@optional,方法可以不实现 3、特别重要命名:这里协议的方法如果是View的就以View开头,不要加前缀,比如UI,就直接写scrollViewXXXXX 4、所有代理得传入对应的控件才好,这里写法有二种,我们可以参考ScrollView来写 第一种写法:只有一个入参的,这里就把控件名写到最后面 第二种写法:有多个入参,方法名拆开写@protocol TgFooterViewDelegate <NSObject>@optional- (void)tgFooterViewLoadDidClick:(TgFooterView *) TgFooterView;@end2、再写一个代理注意:1、代理属性是(nonatomic, weak) 2、代理的类型是id,这样不受任何限制 3、代理中代理属性的名字是:delegate,记住前面是不带有*符号的    这里考虑是不是只要是返回id类型,都不用带上* 4、最重要一点:***************** 这里一定要判断代理是否实现,实现了再执行方法 @property(nonatomic, weak) id<TgFooterViewDelegate> delegate;//写一个代理申明类-----------@property(nonatomic, weak) id<TgFooterViewDelegate> delegate;//写一个代理#import <UIKit/UIKit.h>@protocol TgFooterViewDelegate <NSObject>@optional- (void)loadingMoreData;@end@interface TgFooterView : UIView+ (instancetype)footerView;//用来返回TgFooterView对象@property(nonatomic, weak) id<TgFooterViewDelegate> delegate;//写一个代理@end实现类----------- 一定记住当调用我们代理方法的时候判断方法是否实现respondsToSelector方法/** *  点击加载按钮显示 */- (IBAction)loadBtnClick{    //1、隐藏按钮    self.loadBtn.hidden = YES;        //2、显示正在加载    self.loadView.hidden = NO;        //3、显示更多数据    //3.1 添加更多数据模型    if ([self.delegate respondsToSelector:@selector(tgFooterViewLoadDidClick:)]) {        [self.delegate tgFooterViewLoadDidClick:self];    }    //3.2 刷新表格(告诉tableView重新加载模型数据,调用tableView的ReloadData)    }@end-----------------------------------------------------------使用重点:1、设置对应的代理对象是谁,然后代理对象再实现对应的代码    TgFooterView *footerView = [TgFooterView footerView];    footerView.delegate = self;

0 0
原创粉丝点击