配置如下:

Xcode 8.2
Swift 3.0
在iOS开发中,无论是 Objective-C 还是 Swift ,Delegate 有着具足轻重的位置,如TabelViewDelegate 与 TableViewDataSource。
Swift 中的代理模式 和 Objective-C 除了语法外,几乎一样。
Objective-C 代理模式
在介绍 Swift 代理模式前,先来看回顾一下 Objective-C 中的代理模式如何实现
Objective-C 中用代理实现反向传值:
委托方(子控制器)
委托方需要实现
创建协议 、声明协议方法
@protocol SubViewDelegate <NSObject> - (void)backWithStr:(NSString *) str; @end
创建一个代理属性
// weak声明 @property (nonatomic, weak) id<SubViewDelegate> delegate;
执行协议方法
// 判断代理是实现该方法,避免carsh
if ([self.delegate respondsToSelector:@selector(backWithStr:)]) {
[self.delegate backWithStr:self.textField.text];
}
代理方(主控制器)
代理方需要实现
遵守(继承)协议
@interface ViewController () <SubViewDelegate>
将代理设为自己
subVC.delegate = self;
实现代理方法
- (void)backWithStr:(NSString *)str {
self.label.text = str;
}
Swift 代理模式
Swift 代理模式 与 Objective-C 一样,只是语法不同。
Swift 中用代理实现反向传值:
委托方(子控制器)
创建协议 、声明协议方法
protocol SubViewDelegate {
func backStr(str: String)
}
创建一个代理属性
var delegate: SubViewDelegate?
执行协议方法
/// 执行代理方法,将值回传 delegate?.backStr(str: textField.text ?? "")
代理方(主控制器)
继承协议
class ViewController: UIViewController, SubViewDelegate
将代理设为自己
subVC.delegate = self
实现代理方法
func backStr(str: String) {
self.textF.text = str
}
总结
对比可以方法 Swift 代理模式 与 Objective-C 用法完全相同,只是语法发生了变化。
值得一提的是Swift 的扩展 extension可以用来继承协议,实现代码隔离,便于维护。
/// 使用扩展继承协议 实现协议方法 可以分离代码
extension ViewController: SubViewDelegate{
/// 实现代理方法
func backStr(str: String) {
self.textF.text = str
}
}
最后附上Demo源码
好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# swift
# 代理
# swift3
# swift3.0
# Swift 5.1 之类型转换与模式匹配的教程详解
# 深入讲解Swift中的模式匹配
# 深入理解Swift中单例模式的替换及Swift 3.0单例模式的实现
# swift where与匹配模式的实例详解
# IOS Swift3 四种单例模式详解及实例
# 仓库模式及其在Swift 项目中的应用详解
# 设为
# 创建一个
# 的是
# 好了
# 这篇文章
# 谢谢大家
# 一提
# 如何实现
# 可以用来
# 完全相同
# 回传
# 具足
# 发生了
# 有疑问
# lt
# text
# center
# TabelViewDelegate
# TableViewDataSource
# align
相关文章:
深圳网站制作培训,深圳哪些招聘网站比较好?
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
如何通过网站建站时间优化SEO与用户体验?
青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?
建站主机CVM配置优化、SEO策略与性能提升指南
如何登录建站主机?访问步骤全解析
义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?
如何挑选优质建站一级代理提升网站排名?
建站之星如何配置系统实现高效建站?
建站之星会员如何解锁更多建站功能?
沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?
如何获取PHP WAP自助建站系统源码?
招贴海报怎么做,什么是海报招贴?
英语简历制作免费网站推荐,如何将简历翻译成英文?
已有域名和空间,如何快速搭建网站?
专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?
焦点电影公司作品,电影焦点结局是什么?
网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?
如何选择高效可靠的多用户建站源码资源?
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?
如何快速生成ASP一键建站模板并优化安全性?
如何彻底删除建站之星生成的Banner?
在线制作视频的网站有哪些,电脑如何制作视频短片?
淘宝制作网站有哪些,淘宝网官网主页?
制作销售网站教学视频,销售网站有哪些?
南京网站制作费用,南京远驱官方网站?
建站之星导航菜单设置与功能模块配置全攻略
重庆市网站制作公司,重庆招聘网站哪个好?
jQuery 常见小例汇总
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?
沈阳制作网站公司排名,沈阳装饰协会官方网站?
山东云建站价格为何差异显著?
黑客入侵网站服务器的常见手法有哪些?
如何选择高效稳定的ISP建站解决方案?
官网网站制作腾讯审核要多久,联想路由器newifi官网
微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?
北京的网站制作公司有哪些,哪个视频网站最好?
高性能网站服务器部署指南:稳定运行与安全配置优化方案
西安大型网站制作公司,西安招聘网站最好的是哪个?
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
如何通过虚拟主机空间快速建站?
定制建站是什么?如何实现个性化需求?
如何解决ASP生成WAP建站中文乱码问题?
建站之星伪静态规则如何正确配置?
如何选择建站程序?包含哪些必备功能与类型?
三星网站视频制作教程下载,三星w23网页如何全屏?
潮流网站制作头像软件下载,适合母子的网名有哪些?
建站之星如何助力网站排名飙升?揭秘高效技巧
*请认真填写需求信息,我们会在24小时内与您取得联系。