swift5的代理的使用
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的代理的使用相关推荐
- swift5以上版本的代理的实现,详细教你书写代理
swift5以上版本的代理的实现,详细教你书写代理 swift 代理与OC代理同等重要.非常重要,必须要学好,搞懂 什么是代理,就是自己的事情不去做,让别人去做.交给别人去做 我这里有个view.sw ...
- Swift5以及IOS15对于二维码的使用
Swift5以及IOS15对于二维码的使用 info.plist 加入这句话,而且第三个功能必须在真机上运行,模拟机不行. Privacy - Camera Usage Description OC方 ...
- Swift5版本以上自定义回调函数报错
Swift5版本以上自定义回调函数报错 最新swift版本要求在回调函数前面加入@escaping 关键字,以前不写,默认加入,现在不行了 假设一个类写一个全局类方法,第一步写一个class ,代表类 ...
- Web项目使用nginx实现代理端口访问,看这篇就够了
在搭建服务器的时候,项目部署在tomcat上,要访问项目,则需要加上端口号,如何隐藏端口号来访问呢,这就用到了nginx. nginx可以在docker上安装,也可以在linux上安装,这里我建议使用 ...
- RabbitMQ 入门系列(2)— 生产者、消费者、信道、代理、队列、交换器、路由键、绑定、交换器
本系列是「RabbitMQ实战:高效部署分布式消息队列」和 「RabbitMQ实战指南」书籍的读书笔记. RabbitMQ 中重要概念 1. 生产者 生产者(producer)创建消息,然后发送到代理 ...
- 【Spring】通过动态代理改进银行转账事务控制
前情 银行转账的案例中,通过给业务层实现类中每个方法中通过事务控制方法添加事务控制,保证每个方法在执行时只有一个数据库连接,通过事务保证整个方法要成功全部成功,要失败都失败. 问题 业务层实现类添加事 ...
- 【spring】动态代理
代理 动态代理 特点:字节码随用随创建,随用随加载 作用:不修改源码的基础上对方法增强 分类:基于接口的动态代理.基于子类的动态代理 基于接口的动态代理: 涉及的类:Proxy 提供者:JDK ...
- GOF23设计模式(结构型模式)代理模式~
代理模式应用场景十分广泛,随便一个框架都会用到,因此学好代理模式对后续框架学习是最基本的要素!!今天我们就来讲讲代理模式! 目录 1.简介 1. 核心作用 2. 角色分析 2. 应用场景 4. 分类 ...
- 定制语音代理(智能体)的背后是什么?
定制语音代理(智能体)的背后是什么? What's behind the move to custom voice agents? 自动化是未来的发展方向.生活在一个现在的时代,希望所有的事情都能迅速 ...
最新文章
- “芯”战争,人工智能芯片研发攻略
- SpaceX星舰飞船又炸了,马斯克迷惑表态:成功了!火星等我
- 【Linux】8_存储管理逻辑卷LVM
- Elasticsearch的用例:灵活的查询缓存
- CVE-2017-15715漏洞复现
- 【思考】一次交付项目小结
- 《计算机网络》| 时隔两年,再次发布
- scala 编程 ——类型限定与泛型编程
- Python学习 Day55 多线程下载壁纸 04
- 管理系统中计算机应用 tps,全国1月自学考试管理系统中计算机应用试题(5)
- Windows Server 2016域控服务器如何取消密码复杂性规则
- 制作拨号服务器,如何打造全自动的拨号上网服务器
- 基于帕累托最优的多目标SNP选择
- 计算机导论 教学方法,计算机导论课教学方法探讨
- creator 面试
- EasyExcel实现下载Excel(解决无法从浏览器下载问题)
- 反游戏规则~触发5亿创设~引发3-6个跌停?
- java基于springboot的火车高铁购票系统
- 小型变频器电流显示误差解决方案
- 光伏发电+boost+储能+双向dcdc+并网逆变器控制(低压用户型电能路由器仿真模型)
热门文章
- fs react 使用 保存文件_使用FS进行文件同步和备份
- android工程引入unity,Unity导出Android Studio工程
- 最受欢迎的女友职业排行榜Top10
- 焊盘脱落怎么办?莫慌,现在是飞线打圈圈教学时间
- 如何写单片机的寄存器,这篇文章带你入门。
- PCB工程师的7个好习惯
- css3魔方3乘3每层旋转_在玩魔方中学数学,原来魔方与矩阵还有这样的关系
- oracle desc能看约束,ORACLE 12C新特性-DESC显示不可见字段 | 信春哥,系统稳,闭眼上线不回滚!...
- java 文件递归删除文件夹_Java十行代码实现递归删除文件夹中所有文件
- c 中连接mysql登录不成功_数据库连接失败的原因分析及解决办法 | 学步园