IOS之代理的使用(重点)

IOS的代理(Delegate) 是学习的重难点,必须学会,必须滚瓜烂熟
1.点击自定义视图的时候,创建了一个Label,Label添加到了superView,不合理的地方
2 “越权” 添加Label 的工作上交给视图控制器更合理
解决方法
在按钮被点击的时候,通知视图控制器 => 视图控制器监听按钮的点击 => 视图控制器是自定义视图的代理
第一步:
//1. 协议名 以类名开始+Delegate
@protocol AppInfoDelegate

第二步:
//2. 协议方法,以类名开始(没有类前缀) ,第一个参数是自己
//由于代码由上往下编译,导致没有找到,@interface太早,需要 使用@class 进行类引用
@required
-(void)appInfoViewDidClickDownLoadButton:(AppInfoView *_Nullable)appInfoView;

第三步:
//3.定义代理属性,遵守了AppInfoDelegate 协议的任意一个对象。,都可以成为代理
@property(nonatomic,weak) id delegate;

第四步:
//4. 通知代理
[self.delegate appInfoViewDidClickDownLoadButton:self];

第五步:
//5. 遵守AppInfoView协议,
@interface ViewController ()

第六步:
AppInfoView *appView = [AppInfoView appInfoViewWithAppInfo:self.appList[i]];
//6.设置代理
appView.delegate = self;

第七步:
//7.第7步
#pragma mark - 自定义appInfoView的代理方法的实现

  • (void)appInfoViewDidClickDownLoadButton:(AppInfoView *)appInfoView{
    self.tipLabel.text = [NSString stringWithFormat:@“您下载了%@”,appInfoView.appInfo.name];
    [UIView animateWithDuration:2.0 animations:^{
    self.tipLabel.alpha = 1.0;
    } completion:^(BOOL finished) {
    [UIView animateWithDuration:1.0 animations:^{
    self.tipLabel.alpha = 0.0;
    }];
    }];

}

第八步:
//8.@optional 和 @required 的区别 ,required必须实现,optional可选实现函数
//如果optional有错误,必须判读一下
@required
-(void)appInfoViewDidClickDownLoadButton:(AppInfoView *_Nullable)appInfoView;

第八点1步
//8.1> 判断代理是否实现了协议方法
if([self.delegate respondsToSelector:@selector(appInfoViewDidClickDownLoadButton:)]){
//如果实现了,再通知代理去工作
[self.delegate appInfoViewDidClickDownLoadButton:self];
}

文件有两份,一个是改造前,一个是改造后的,供参考,zip名: 应用程序代理学习.zip

IOS之代理的使用(重点)相关推荐

  1. IOS之代理文字点击变大变小

    IOS之代理文字点击变大变小 重点是掌握代理的使用,否则也失去次此意义 #import "ViewController.h" #import "AHLJFontSizeP ...

  2. iOS之代理/协议 @protocal

    理解: @protocal 可以定义一个协议.一个类如果使用了这个协议,那么就要按照这个协议要求的去办事.最常见的就是UITableViewDelegate.UITableViewDataSource ...

  3. iOS端‘mPaaS移动分析‘重点记录

    1.官方文档是:https://help.aliyun.com/document_detail/49561.html?spm=a2c4g.11186623.6.796.d43a42f7p4bBmI 但 ...

  4. iOS 设置代理详细步骤

    //设置代理 和方法  属性 @protocol detailNoteProtocol <NSObject]]> - (void)aa; @end //声明代理属性 @property ( ...

  5. iOS关于代理的理解

    直接上3个图,不知道说的对不对,欢迎大神指点 转载于:https://www.cnblogs.com/sosomaxba/p/3861029.html

  6. IOS代理的设计模式

    在项目中我们经常会用到代理的设计模式,这是iOS中一种消息传递的方式,也可以通过这种方式来传递一些参数.这篇文章会涵盖代理的使用技巧和原理,以及代理的内存管理等方面的知识.我会通过这些方面的知识,带大 ...

  7. charles ios设备 https代理配置

    首先需要在Mac上打开Charles,并启动代理,完成了一系列配置后,能正常监听流量了以后,再进行下面操作(配置电脑证书等). PC端Charles设置,可以参考我另外一篇文章https://segm ...

  8. IOS设置系统代理+APP不走代理绕过方式

    IOS系统代理设置环境 确保手机和pc端网络连接同一个网络 1.设置burp端 2.手机进行代理设置 3.手机端访问代理,点击右上角下载burp证书,点击允许 点击已下载描述文件,选择安装 安装成功 ...

  9. ios开发学习笔记--调用相册或相机(UIImagePickerController)

    Ios开发相册和相机的使用-UIImagePickerController 在开发中,有时候需要获取用户的相册或者调用相机采集图片,比如APP的头像,此时可以使用UIImagePickerContro ...

最新文章

  1. wpf richtextbox 存储到数据库并显示
  2. 如何用Service来启动背景音乐
  3. SAP Spartacus list item点击之后的detail页面跳转
  4. Cocos2d-x 3.2 学习笔记(四)学习打包Android平台APK!
  5. 华为nova 8系列发布日期曝光:售价还卖贵点?
  6. OLAP-ClickHouse-大数据Week13-DAY3-ClickHouse
  7. java project mybatis,Java使用Mybatis
  8. python 学习爬虫教程~
  9. mysql 判断大小_《fantasy系列》高性能mysql(一)
  10. C#软件注册与注册机
  11. linux下删除带特殊符号的文件
  12. 产品 电信nb接口调用_【IoT】物联网NB-IoT之电信物联网开放平台对接流程浅析
  13. 能量信号、功率信号及能量谱、功率谱
  14. 添加IIS FTP站点密码
  15. 聚类分析通俗易懂解释
  16. 三角函数之和差化积/积化和差/倍角公式(汇总)
  17. c语言辗转求最小公倍数,c语言:辗转相除法求最大公约数、最小公倍数
  18. 动能方案|RFID动物耳标解决方案
  19. server can't find test.com: SERVFAIL
  20. web scraper翻页功能的实现

热门文章

  1. html清除溢出,深入理解CSS overflow:hidden——溢出,坍塌,清除浮动
  2. python调用计算器卡死_Python+tkinter使用40行代码实现计算器功能
  3. 太牛了!芯片级拆解世界第一颗FPGA芯片!
  4. 2020 职场,哪类程序员会是王者?!
  5. 我的世界1 11java,Editing Java版Alpha v1.0.11
  6. xilinx FPGA的远程更新(动态加载)详解(Using a Microprocessor to Configure 7 Series FPGAs)
  7. CADENCE ORCAD原理图导出FPGA UCF的方法
  8. centos7 xampp启动mysql数据库_mysql主从配置,用win xampp和centos7环境下测试
  9. 工作原理_逆变器工作原理
  10. 测试开发python面试_python测试开发面试之深浅拷贝