Swift-代理
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px "Helvetica Neue"; color: #535b60; background-color: #ffffff }
span.s1 { }
span.s2 { font: 14.0px Monaco; color: #c7254e; background-color: #f8f8f8 }
委托是一种设计模式,它允许类或结构体将一些需要它们负责的功能交由给其他的类型
委托模式的实现很简单: 定义协议来封装那些需要被委托的函数和方法,使其遵循着拥有这些被委托的函数和方法
//制定需要遵守的协议,制定协议遵守NSObjectProtocol协议
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px Menlo; color: #ffffff }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px "PingFang SC"; color: #4dbf56 }
span.s1 { color: #c2349b }
span.s2 { }
span.s3 { color: #00afca }
span.s4 { font: 24.0px Menlo; color: #ffffff }
span.s5 { font: 24.0px Menlo }
protocol bottomViewDelegate : NSObjectProtocol {
//设置协议的方法
func bottomViewClick(btn : UIButton)
}
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px Menlo; color: #ffffff }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px Menlo; color: #ffffff; min-height: 28.0px }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px Menlo; color: #4dbf56 }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px Menlo; color: #00afca }
p.p5 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px "PingFang SC"; color: #4dbf56 }
p.p6 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px Menlo; color: #e44347 }
span.s1 { color: #c2349b }
span.s2 { }
span.s3 { color: #00afca }
span.s4 { color: #ffffff }
span.s5 { font: 24.0px "PingFang SC" }
span.s6 { color: #93c96a }
span.s7 { color: #e44347 }
span.s8 { font: 24.0px "PingFang SC"; color: #e44347 }
span.s9 { color: #8b84cf }
span.s10 { font: 24.0px Menlo; color: #ffffff }
span.s11 { font: 24.0px Menlo }
class BottomView: UIView {
var btn : UIButton!
//用weak定义代理
weak var delegate : bottomViewDelegate?
override init (frame : CGRect){
super.init(frame: frame)
let arr = ["日","月","周"]
for i in 0..<3 {
btn = UIButton(type: .custom)
btn.frame = CGRect(x: 375/3*i , y: 0, width: 375/3, height: 44)
btn.setTitle(arr[i], for: .normal)
btn.tag = i
btn.backgroundColor = UIColor.gray
btn.setTitleColor(i == 1 ? UIColor.blue : UIColor.black, for: .normal)
btn.addTarget(self, action: #selector(clickedButton(button:)), for: .touchUpInside)
self.addSubview(btn)
}
}
func clickedButton(button : UIButton){
//判断代理是否存在,让代理去执行方法
delegate?.bottomViewClick(btn: button )
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px "PingFang SC"; color: #4dbf56 }
span.s1 { }
span.s2 { font: 24.0px Menlo }
Swift-代理的更多相关文章
- Swift代理的使用
Swift代理的使用 协议规定了用来实现某一特定功能所必需的方法和属性. 任意能够满足协议要求的类型被称为遵循(conform)这个协议. 类,结构体或枚举类型都可以遵循协议,并提供具体实现来完成协议 ...
- Swift代理造成内存泄漏的解决办法
在swift中,使用代理 ,可能很多人会这样实现: .首先定义一份协议. protocol ToolProrocol{ //代理方法 func didRecieveResults(result:Int ...
- swift代理使用
代理声明: //oc调用代理 @objc(NurseListCellDelegate) protocol NurseListCellDelegate : NSObjectProtocol{ func ...
- swift -- 代理delegate
1.声明协议 protocol SecondDelagate { func sendValue(text : String!) -> Void } 2.声明代理属性 var delegate : ...
- Swift代理和传值
第一个视图控制器: import UIKit // 遵循协议 class ViewController: UIViewController,SecondVCDelegate { override fu ...
- Swift内存管理、weak和unowned以及两者区别
Swift 是自动管理内存的,这也就是说,我们不再需要操心内存的申请和分配.当我们通过初始化创建一个对象时,Swift 会替我们管理和分配内存.而释放的原则遵循了自动引用计数 (ARC) 的规则:当一 ...
- 在oc代码中使用swift第三方框架
swift现在使用越来越多了,一些主流的框架或者效果比较好的demo都陆陆续续使用swift写了.所以,要学会如何在oc的项目中调用swift. 这里主要借助一个桥梁文件,这个桥梁文件一般在你导入sw ...
- swift开发之--代理协议的使用
swift代理的使用,和oc版本有区别,区别还是蛮大的,不过和oc一样都是用于反向传值: 实现如下: 1,声明两个类 2,实现流程,viewcontroller页面点击按钮进入firstVC页面,然后 ...
- Swift内存管理、weak和unowned以及两者区别(如何使用Swift 中的weak与unowned?)
Swift 是自动管理内存的,这也就是说,我们不再需要操心内存的申请和分配. 当我们通过初始化创建一个对象时,Swift 会替我们管理和分配内存.而释放的原则遵循了自动引用计数 (ARC) 的规则:当 ...
- OpenStack云计算快速入门之一:OpenStack及其构成简介
原文:http://blog.chinaunix.net/uid-22414998-id-3263551.html OpenStack云计算快速入门(1) 该教程基于Ubuntu12.04版,它将帮助 ...
随机推荐
- iOS开发--Swift RAC响应式编程初探
时间不是很充足, 先少说点, RAC的好处是响应式编程, 不需要自己去设置代理委托, target, 而是主要以信息流(signal), block为主, 看到这里激动吧, 它可以帮你监听你的事件, ...
- 如何用Github版本控制非Github库
Git的图形化客户端有很多,不同的人可能习惯用不同的客户端.本人更习惯于Github的客户端,因为上Github比较多,同步代码到Github用官方的客户端是最方便的,所以也就更习惯于使用Github ...
- 人工智能AI-机器视觉CV-数据挖掘DM-机器学习ML-神经网络-[资料集合贴]
说明:这个贴用于收集笔者能力范围内收集收藏并认为有用的资料,方便各方参考,免去到处找寻之苦,提升信息的交叉引用价值.仅供参考,不作为必然的推荐倾向.如涉及版权等问题请相关人员联系笔者,谢谢. |博客| ...
- 使用c/c++扩展python
用python脚本写应用比较方便,但有时候由于种种原因需要扩展python(比如给程序提供python接口等). 之前一直想整理下,今天终于坐下来把这件事情给做了,这里记录下,也方便我以后查阅. 说明 ...
- Linux系统用户和用户组介绍
1.请问如下登录环境故障的原理及解决办法? [root@server test]# useradd rr ##创建用户rr [root@server test]# id rr uid=510(rr) ...
- Common Bugs in C Programming
There are some Common Bugs in C Programming. Most of the contents are directly from or modified from ...
- web前端(实习生)之 “百度一面”
2016.3.18,星期五.我经历了我的第一次面试. 不得不说,百度是一个高效的公司,在短短一下午之间我就直接经历了一面二面,说没有压力是假的,还记得在中途等待二面的时候我至少有一小段的时间脑子是卡带 ...
- CentOS 7搭建SVN服务器
安装步骤如下: 1.yum install subversion 2.查看安装版本 svnserve --version 3.创建SVN版本库目录 mkdir -p /var/svn/svnrepos ...
- [LeetCode] Compare Version Numbers 版本比较
Compare two version numbers version1 and version1.If version1 > version2 return 1, if version1 &l ...
- [LeetCode] Missing Ranges 缺失区间
Given a sorted integer array where the range of elements are [0, 99] inclusive, return its missing r ...