iOS开发--代理的使用

作者: 爱吃鱼的小灰 | 来源:发表于2016-11-16 14:37 被阅读8973次
iOS中在cocoa框架中的Delegate模式与自定义的委托模式。
  • 在cocoa框架中的Delegate模式中,委托人往往是框架中的对象(视图中的控件、表视图神马的),代理人往往是视图控制器对象。代理人首先得满足一个条件:就是在.h文件中申明它拥有代理资格(也就是遵守某种协议)其次,在.m文件中定义委托人可以让代理人去代替做的事情:(实现协议里的某些方法)
代理模式的使用场合:
  • 当一个类的某些功能需要被别人来实现,但是既不明确是些什么功能,又不明确谁来实现这些功能的时候,委托模式就可以派上用场。例如你可以再写个类,实现也是完全可以的。换谁来,只要它实现了这个方法,我就可以委托它来做这个事。说到底一切都是为了使类之间的耦合性更松散。好的代码应该对扩展开放,对修改关闭。
  • 下边请看示例:
    首先是委托者的.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
  • 接下来看在委托者的.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];
    }
}
  • 接下来是(代理人)也就是控制器中的代码:
  // 首先是要遵守这个协议
@interface RootViewController ()<UITableViewDelegate,UITableViewDataSource,LeftBodyCellDelegate>
  // 然后是要设置代理,在创建cell时候要设置代理人为控制器
    cell.leftBodyCellDelegate = self;
  • 接下来就是要去实现协议中规定的方法了
  #pragma mark --------------- LeftBodyCellDelegate
  - (void)selectedItemButton:(NSInteger)index
  {
// 这里是你点击了cell里的某个按钮后要做的操作
}

相关文章

  • iOS开发---图解代理

    什么是代理? 代理(Delegate)是iOS开发中的一种重要的消息传递方式,是iOS开发中普遍使用的通用设计模式...

  • iOS开发--代理的使用

    iOS中在cocoa框架中的Delegate模式与自定义的委托模式。 在cocoa框架中的Delegate模式中,...

  • IOS开发之协议和代理

    【iOS开发技术分享】协议与代理 【iOS开发技术分享】协议与代理 一、理解协议与代理 协议: 协议是一个方法签名...

  • 代理

    是iOS开发中一种普遍使用的设计模式代理组成:协议、代理方、委托方 协议 规定代理双方的行为 可以为方法列表,也可...

  • UITextView

    TextView的属性使用和代理方法使用 iOS开发中遇到要写textview的提示文字 写这些东西要用到tex...

  • Day Three UITableView的使用总结

    在iOS开发中使用最为平凡的控件要数UITableView了,在swift中,UITableView和OC的代理方...

  • [学习笔记]_iOS代理基本使用,界面间传值

    参考链接: 你真的了解iOS代理设计模式吗? iOS开发-Protocol协议及委托代理(Delegate)传值 ...

  • MVC设计模式:1-代理(delegate)协议

    在iOS开发中,经常使用到代理(委托)协议以及数据源协议,所谓代理(委托)协议,通俗来讲,顾名思义就是委托别人办事...

  • iOS代理模式的使用,委托(delegate)

    在iOS开发中代理是非常常见和普遍的,代理是一种通用的设计模式,iOS中对代理支持的很好,由代理对象、委托者、协议...

  • iOS开发 单例使用问题

    iOS开发 单例使用问题 iOS开发 单例使用问题

网友评论

    本文标题:iOS开发--代理的使用

    本文链接:https://www.haomeiwen.com/subject/vcrrpttx.html