Swift代理和传值
第一个视图控制器:
import UIKit
// 遵循协议
class ViewController: UIViewController,SecondVCDelegate
{
override func viewDidLoad() {
super.viewDidLoad()
// 创建一个button
let button1 = UIButton(frame: CGRectMake(120, 120, 50, 50))
// 修改背景颜色
button1.backgroundColor = UIColor.redColor()
self.view.addSubview(button1)
// 点击方法
button1.addTarget(self, action: "buttonAction:", forControlEvents: UIControlEvents.TouchUpInside)
}
// button点击方法
func buttonAction(sender:UIButton){
// 跳转下一个界面
let secondVC = SecondViewController()
// 属性传值
secondVC.passValue = "咻"
// 指定代理
// secondVC.delegate = self
// 定义block
secondVC.block = { (tempColor:UIColor)->Void in
self.view.backgroundColor = tempColor
}
self.navigationController?.pushViewController(secondVC, animated: true)
}
// 实现代理方法
func changeColor(tempColor: UIColor) {
self.view.backgroundColor = tempColor
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
/*************************************************************/
代理的六大步骤
1.后页面制定协议
2.前页面代理遵循协议
3.后页面设置代理属性
4.前页面指定代理self
5.后页面发送代理方法命令
6.前页面代理实现代理方法
第二个视图控制器:
import UIKit
protocol SecondVCDelegate {
// 协议中的方法
func changeColor(tempColor:UIColor)
}
class SecondViewController: UIViewController {
// 属性
var passValue:String?
// 代理属性
var delegate:SecondVCDelegate?
// block属性
var block:((UIColor)->Void)?
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor.cyanColor()
print(self.passValue!)
self.title = self.passValue
// 返回button
let button2 = UIButton(frame: CGRectMake(120, 120, 50, 50))
button2.backgroundColor = UIColor.blackColor()
button2.addTarget(self, action: "button2Action:", forControlEvents: UIControlEvents.TouchUpInside)
self.view.addSubview(button2)
}
// button2点击方法
func button2Action(sender:UIButton) {
// 发送代理方法命令
// self.delegate?.changeColor(UIColor.redColor())
// 调用block
self.block!(UIColor.redColor())
// 返回
self.navigationController?.popViewControllerAnimated(true)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
Swift代理和传值的更多相关文章
- swift中的传值
光阴似箭,日月如梭,转眼间学习的旅途已经过了一大半了,忘着自己所敲过的成批的代码,看着自己付出和努力,默默地为自己这几个月的奋斗感到欣慰,不论学习的路途再怎么的艰辛,但是自己还是坚持过来了,回想着以往 ...
- OC10_代理反向传值
// // ProtectedDelegate.h // OC10_代理反向传值 // // Created by zhangxueming on 15/6/24. // Copyright (c) ...
- OC9_代理正向传值
// // ProtectedDeleagate.h // OC9_代理正向传值 // // Created by zhangxueming on 15/6/24. // Copyright (c) ...
- Swift代理的使用
Swift代理的使用 协议规定了用来实现某一特定功能所必需的方法和属性. 任意能够满足协议要求的类型被称为遵循(conform)这个协议. 类,结构体或枚举类型都可以遵循协议,并提供具体实现来完成协议 ...
- Swift: 比较Swift中闭包传值、OC中的Block传值
一.介绍 开发者对匿名函数应该很清楚,其实它就是一个没有名字的函数或者方法,给人直观的感觉就是只能看到参数和返回值.在iOS开发中中,它又有自己的称呼,在OC中叫Block代码块,在Swift中叫闭包 ...
- Swift 08.页面传值
OC中经常用到的一种初始化控制器的方法.比如A push B.并且将A的一个值:value 传递给B 使用.简单的办法就是 在B重构init方法.比如在.h 中定义: - ()initValue:(N ...
- iOS 代理反向传值
在上篇博客 iOS代理协议 中,侧重解析了委托代理协议的概念等,本文将侧重于它们在开发中的应用. 假如我们有一个需求如下:界面A上面有一个button.一个label.从界面A跳转到界面B,在界面B的 ...
- iOS-设计模式之代理反向传值
代理设计模式就是自己的方法自己不实现,让代理对象去实现. 可以让多个类实现一组方法. 委托模式的好处在于: 1.避免子类化带来的过多的子类以及子类与父类的耦合 2.通过委托传递消息机制实现分层解耦 代 ...
- Swift代理造成内存泄漏的解决办法
在swift中,使用代理 ,可能很多人会这样实现: .首先定义一份协议. protocol ToolProrocol{ //代理方法 func didRecieveResults(result:Int ...
随机推荐
- UNIX环境高级编程--6
系统数据文件和信息 数据文件都是ASCII文本文件,并且使用标准I/O库读这些文件,例如口令文件/etc/passwd和组文件/etc/group就是经常被多个程序频繁使用的两个文件. 口 ...
- Elasticsearch之Hadoop插件的安装(图文详解)
这个Hadoop插件的安装是非常重要. Hadoop插件安装 在es的安装目录下 bin/plugin install elasticsearch/elasticsearch-repository-h ...
- mybatis中打印sql语句
在mybatis-config.xml中properties节点下,配置一个settings节点 <settings> <setting name="cacheEnable ...
- Java_注解之一
注解可以替换复杂的hbm.xml文件,使得程序的开发大大简化 @Override :子类重写父类方法 @Test :junit测试 @Before :测试之前执行 @SuppressWarnin ...
- oracle数据库忘记用户名和密码莫着急
刚安装完Oracle 11g后,登录的时候没有记住用户名和密码,解决方法:新建一个用户 第一步:以系统身份登录 cmd--->sqlplus 提示输入用户名,然后输入sqlplus/as sys ...
- DataTable And DataRow
/// <summary> /// 将DataTable的字段名全部翻译为中文 /// </summary> /// <param name="table&qu ...
- Unity引擎 UGUI
Unity UGUI讲解 1.导入UI图片资源 2.设置参数: TextureType(纹理类型) 精灵 2D and UI SpriteMode(精灵模式) Single(单) multiple( ...
- Miller Rabin 大素数测试
PS:本人第一次写随笔,写的不好请见谅. 接触MillerRabin算法大概是一年前,看到这个算法首先得为它的神奇之处大为赞叹,竟然可以通过几次随机数据的猜测就能判断出这数是否是素数,虽然说是有误差率 ...
- 【译】x86程序员手册11- 4.1系统寄存器
4.1 Systems Registers 系统寄存器 The registers designed for use by systems programmers fall into these cl ...
- 【技术累积】【点】【java】【25】Orderd
基础概念 Orderd是spring core中定义的一个接口,使用它以及相关的Comparator和@Order注解,可以实现对元素的排序. @Order 直接先说下@Order注解吧,使用场景较多 ...