iOS代理方法的实现步骤

1 篇文章 0 订阅

代理模式的使用场合

当一个类的某些功能需要被别人来实现,但是既不明确是些什么功能,又不明确谁来实现这些功能的时候,委托模式就可以派上用场。例如你可以再写个类,实现也是完全可以的。换谁来,只要它实现了这个方法,我就可以委托它来做这个事。说到底一切都是为了使类之间的耦合性更松散。好的代码应该对扩展开放,对修改关闭。

  • 事例
1.委托者的.h文件中的代理指定以及声明
#import <UIKit/UIKit.h>
#import "LeftBarModel.h"
@protocol LeftBodyCellDelegate <NSObject>
// 由于这里没有任何修饰词所以是默认的代理方法,切记默认的代理方法,如果遵守了协议那就必须实现 
/**
*  @Description item选中跳转对应的控制器 
*  @param 被点击的按钮
*/
- (void)selectedItemButton:(NSInteger)index;
// 只是为了演示这儿是想说明下边这个方法是可选的就是可以实现也可以不实现
@optional
- (void)optionalFouction;
@end
@interface LeftBodyTableViewCell : UITableViewCell
// 在这里定义一个属性,注意这里的修饰词要用weak
@property(nonatomic,weak)id<LeftBodyCellDelegate>   leftBodyCellDelegate;
@end
2.委托者的.m文件中调用代理中的方法
// 这里解释下:我的这个委托者是定制的cell这里包含了一个按钮,按钮的点击事件在cell里我打算用代理传递出去给控制器,所以这是个按钮的点击响应事件
- (void)itemButonClick:(UIButton *)button
{
// 这里的self.leftBodyCellDelegate是判断一下控制器有没有遵守协议设置代理
// [self.leftBodyCellDelegate respondsToSelector:@selector(selectedItemButton:)]这个是判断有没有实现这个代理方法
// 当两个条件都满足了就可以调用代理方法了
  if (self.leftBodyCellDelegate && [self.leftBodyCellDelegate respondsToSelector:@selector(selectedItemButton:)])
  {
// 调用代理方法
      [self.leftBodyCellDelegate selectedItemButton:button.tag - 1000];
  }
}
3.代理控制器中的代码
// 首先是要遵守这个协议
@interface RootViewController ()<UITableViewDelegate,UITableViewDataSource,LeftBodyCellDelegate>
// 然后是要设置代理,在创建cell时候要设置代理人为控制器
cell.leftBodyCellDelegate = self;
4.实现协议中规定的方法了
#pragma mark --------------- LeftBodyCellDelegate
- (void)selectedItemButton:(NSInteger)index
{
// 这里是你点击了cell里的某个按钮后要做的操作
}

原文点这里

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值