swift5的代理的使用

swift5 的代理是ios重难点。
例如 UICollectionViewCell 想往 UICollectionViewController 传值或者是通知一下一个值。怎么去做。
首先定义一个协议:

protocol PhotoBrowserViewCellDelegate: NSObjectProtocol{
func imageViewClick()
}
继承NSObjectProtocol,

一。书写一个方法,没有方法体 functuon Body, 相当于java 的interface,接口,只声明函数,不实现具体的方法。我这里没有传参,可以在小括号书写传递的参数和参数类型的定义
二。在class 类里面定义一个成员变量,变量类型是PhotoBrowserViewCellDelegate,并设置为可选类型。

var delegate: PhotoBrowserViewCellDelegate?

三。在click函数里面 点击事件里面书写:

self.delegate?.imageViewClick()
直接通过成员变量调用协议里面的函数。我这里没有传参数,需要传参的话,在协议里面根据自身情况传递相应的参数。

四。来到UICollectionViewController类里面,

首先遵守一下协议,
即cell.delegate = self,
再继承一下 PhotoBrowserViewCellDelegate,重写里面的方法.
extension PhotoBrowserController: PhotoBrowserViewCellDelegate{
func imageViewClick() {
closeVc()
}
}
大功告成。

再看一个带参数案例的代理。
一 定义协议:

protocol FontSizePickerDelegate : NSObjectProtocol {func fontSizePicker(picker: FontSizePicker, didSelectSize size: FontSize)
}

二 定义属性delegate

var delegate: FontSizePickerDelegate! {didSet {self.buttonClick(button: self.btns[0])}}

三 。 click函数里面调用方法

  self.delegate.fontSizePicker(picker: self, didSelectSize: FontSize(rawValue: button.tag)!)

来到xxxController里面,
遵守代理
picker.delegate = self
重写代理方法:

extension ViewController: FontSizePickerDelegate {func fontSizePicker(picker: FontSizePicker, didSelectSize size: FontSize) {}
}

swift5的代理的使用相关推荐

  1. swift5以上版本的代理的实现,详细教你书写代理

    swift5以上版本的代理的实现,详细教你书写代理 swift 代理与OC代理同等重要.非常重要,必须要学好,搞懂 什么是代理,就是自己的事情不去做,让别人去做.交给别人去做 我这里有个view.sw ...

  2. Swift5以及IOS15对于二维码的使用

    Swift5以及IOS15对于二维码的使用 info.plist 加入这句话,而且第三个功能必须在真机上运行,模拟机不行. Privacy - Camera Usage Description OC方 ...

  3. Swift5版本以上自定义回调函数报错

    Swift5版本以上自定义回调函数报错 最新swift版本要求在回调函数前面加入@escaping 关键字,以前不写,默认加入,现在不行了 假设一个类写一个全局类方法,第一步写一个class ,代表类 ...

  4. Web项目使用nginx实现代理端口访问,看这篇就够了

    在搭建服务器的时候,项目部署在tomcat上,要访问项目,则需要加上端口号,如何隐藏端口号来访问呢,这就用到了nginx. nginx可以在docker上安装,也可以在linux上安装,这里我建议使用 ...

  5. RabbitMQ 入门系列(2)— 生产者、消费者、信道、代理、队列、交换器、路由键、绑定、交换器

    本系列是「RabbitMQ实战:高效部署分布式消息队列」和 「RabbitMQ实战指南」书籍的读书笔记. RabbitMQ 中重要概念 1. 生产者 生产者(producer)创建消息,然后发送到代理 ...

  6. 【Spring】通过动态代理改进银行转账事务控制

    前情 银行转账的案例中,通过给业务层实现类中每个方法中通过事务控制方法添加事务控制,保证每个方法在执行时只有一个数据库连接,通过事务保证整个方法要成功全部成功,要失败都失败. 问题 业务层实现类添加事 ...

  7. 【spring】动态代理

    代理 动态代理 特点:字节码随用随创建,随用随加载 作用:不修改源码的基础上对方法增强 分类:基于接口的动态代理.基于子类的动态代理 基于接口的动态代理: 涉及的类:Proxy     提供者:JDK ...

  8. GOF23设计模式(结构型模式)代理模式~

    代理模式应用场景十分广泛,随便一个框架都会用到,因此学好代理模式对后续框架学习是最基本的要素!!今天我们就来讲讲代理模式! 目录 1.简介 1. 核心作用 2. 角色分析 2. 应用场景 4. 分类 ...

  9. 定制语音代理(智能体)的背后是什么?

    定制语音代理(智能体)的背后是什么? What's behind the move to custom voice agents? 自动化是未来的发展方向.生活在一个现在的时代,希望所有的事情都能迅速 ...

最新文章

  1. “芯”战争,人工智能芯片研发攻略
  2. SpaceX星舰飞船又炸了,马斯克迷惑表态:成功了!火星等我
  3. 【Linux】8_存储管理逻辑卷LVM
  4. Elasticsearch的用例:灵活的查询缓存
  5. CVE-2017-15715漏洞复现
  6. 【思考】一次交付项目小结
  7. 《计算机网络》| 时隔两年,再次发布
  8. scala 编程 ——类型限定与泛型编程
  9. Python学习 Day55 多线程下载壁纸 04
  10. 管理系统中计算机应用 tps,全国1月自学考试管理系统中计算机应用试题(5)
  11. Windows Server 2016域控服务器如何取消密码复杂性规则
  12. 制作拨号服务器,如何打造全自动的拨号上网服务器
  13. 基于帕累托最优的多目标SNP选择
  14. 计算机导论 教学方法,计算机导论课教学方法探讨
  15. creator 面试
  16. EasyExcel实现下载Excel(解决无法从浏览器下载问题)
  17. 反游戏规则~触发5亿创设~引发3-6个跌停?
  18. java基于springboot的火车高铁购票系统
  19. 小型变频器电流显示误差解决方案
  20. 光伏发电+boost+储能+双向dcdc+并网逆变器控制(低压用户型电能路由器仿真模型)

热门文章

  1. fs react 使用 保存文件_使用FS进行文件同步和备份
  2. android工程引入unity,Unity导出Android Studio工程
  3. 最受欢迎的女友职业排行榜Top10
  4. 焊盘脱落怎么办?莫慌,现在是飞线打圈圈教学时间
  5. 如何写单片机的寄存器,这篇文章带你入门。
  6. PCB工程师的7个好习惯
  7. css3魔方3乘3每层旋转_在玩魔方中学数学,原来魔方与矩阵还有这样的关系
  8. oracle desc能看约束,ORACLE 12C新特性-DESC显示不可见字段 | 信春哥,系统稳,闭眼上线不回滚!...
  9. java 文件递归删除文件夹_Java十行代码实现递归删除文件夹中所有文件
  10. c 中连接mysql登录不成功_数据库连接失败的原因分析及解决办法 | 学步园