代理:如何写一个代理

写一个代理
重点:
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;

			@end
2、再写一个代理
	注意: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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值