Swift语言实现代理传值
需求:利用代理实现反响传值(下面样例採用点击第二个视图控制器中的button来改变第一个视图控制器中的Label的内容)
一、创建RootViewController
import Foundation
import UIKit class RootViewController:UIViewController,ChangeWordDelegate{
var qzLabel:UILabel?
override func viewDidLoad(){
super.viewDidLoad()
self.title = "RootViewController"
let rightBtn:UIBarButtonItem = UIBarButtonItem(title:"下一页",style:.Plain,target:self,action:"nextPage")
self.navigationItem.rightBarButtonItem = rightBtn let rect = CGRect(x:0,y:200,width:320,height:50)
qzLabel = UILabel(frame:rect)
qzLabel!.text = "秦志伟"
qzLabel!.textAlignment = NSTextAlignment.Center
self.view.addSubview(qzLabel) }
func nextPage(){
let svc = SecondViewController()
svc.delegate = self
self.navigationController.pushViewController(svc,animated:true)
}
func changeWord(controller:SecondViewController,string:String){
qzLabel!.text = string
println("qzLabel.text == \(string)")
}
}
二、创建SecondViewController
import Foundation
import UIKit //定义协议改变Label内容
protocol ChangeWordDelegate:NSObjectProtocol{
//回调方法
func changeWord(controller:SecondViewController,string:String)
}
class SecondViewController:UIViewController{
var temp = 0
var delegate:ChangeWordDelegate?
override func viewDidLoad(){
super.viewDidLoad()
self.title = "SecondViewController"
self.view.backgroundColor = UIColor.greenColor()
let rect = CGRect(x:50,y:200,width:150,height:50)
var myButton = UIButton(frame:rect)
myButton.center = CGPointMake(160,200)
myButton.setTitle("改变Label内容",forState:.Normal)
myButton.addTarget(self,action:"btnClicked",forControlEvents:.TouchUpInside)
self.view.addSubview(myButton) }
func btnClicked(){
temp++
println("我被点击了!")
if(delegate){
delegate?.changeWord(self,string:"秦志伟"+String(temp))
} }
}
Swift语言实现代理传值的更多相关文章
- Swift进阶之路(一)——单例模式、属性传值、代理传值、闭包传值
一.单例模式 单例模式是设计模式中最简单的一种,甚至有些模式大师都不称其为模式,称其为一种实现技巧,因为设计模式讲究对象之间的关系的抽象,而单例模式只有自己一个对象. 关于单例,有三个重要的准则需要牢 ...
- Swift语言入门之旅
Swift语言入门之旅 学习一门新的计算机语言,传统来说都是从编写一个在屏幕上打印"Hello world"的程序開始的.那在 Swift,我们使用一句话来实现它: printl ...
- Swift语言快速入门
Swift语言快速入门(首部同步新版官方API文档和语法的Swift图书,确保代码可编译,作者专家在线答疑,图书勘误实时跟进) 极客学院 编著 ISBN 978-7-121-24328-8 201 ...
- Swift语言中为外部参数设置默认值可变参数常量参数变量参数输入输出参数
Swift语言中为外部参数设置默认值可变参数常量参数变量参数输入输出参数 7.4.4 为外部参数设置默认值 开发者也可以对外部参数设置默认值.这时,调用的时候,也可以省略参数传递本文选自Swift1 ...
- swift语言实战晋级-第9章 游戏实战-跑酷熊猫-9-10 移除平台与视差滚动
9.9 移除场景之外的平台 用为平台是源源不断的产生的,如果不注意销毁,平台就将越积越多,虽然在游戏场景中看不到.几十个还看不出问题,那几万个呢?几百万个呢? 所以我们来看看怎么移除平台,那什么样的平 ...
- swift语言实战晋级-第9章 游戏实战-跑酷熊猫-7-8 移动平台的算法
在上个小节,我们完成了平台的产生.那么我们来实现一下让平台移动.平台的移动,我们只需要在平台工厂类中写好移动的方法,然后在GameScene类中统一控制就行了. 在GameScene类中,有个upda ...
- Swift语言 1小时速学教程
本文由 张渊杰 (网名寂静)编写 Swift语言 1小时速学教程 写在前面的话 有些人可能想, 呵呵, 1小时学一门语言, 你不是搞笑吧, 我想说, 是的, 完全可以, 就要看你怎么学了 要想在1小时 ...
- Swift语言Storyboard教程:第一部分
更新记录: 该Storyboard教程由Caroline Begbie更新iOS 8和Swift相关内容.原文作者为教程编纂组的成员Matthijs Hollemans. 2014/12/10更新: ...
- Swift语言指南(十)--字符串与字符
原文:Swift语言指南(十)--字符串与字符 字符串是一段字符的有序集合,如"hellow,world"或"信天翁".Swift 中的字符串由 String ...
随机推荐
- WebService学习总结(5)——WebService常见开发框架比较
在SOA领域,我们认为Web Service是SOA体系的构建单元(building block).对于服务开发人员来说,AXIS和CXF一定都不会陌生.这两个产品都是Apache孵化器下面的Web ...
- SQL server 错误代码对比表
0 操作成功完毕. 1 功能错误. 2 系统找不到指定的文件. 3 系统找不到指定的路径. 4 系统无法打开文件. 5 拒绝訪问. 6 句柄无效. ...
- js进阶 13-8 jquery如何实现侧边栏
js进阶 13-8 jquery如何实现侧边栏 一.总结 一句话总结:先是把侧边栏设置为left为-100px,隐藏起来,jquery自定义动画animate里面的改变元素的距左边的宽度left,sl ...
- Costura.Fody
使用Costura.Fody将源DLL合并到目标EXE 本文为原创文章,如转载,请在网页明显位置标明原文名称.作者及网址,谢谢! 一.本文主要是使用Costura.Fody工具将源DLL合并到目标EX ...
- CSS笔记 - fgm练习 2-8 - 简易日历
<style> *{margin: 0; padding: 0} .outer{ width: 240px; margin: 10px auto; background: #f0f0f0; ...
- 最全Pycharm教程(42)——Pycharm扩展功能之Emacs外部编辑器
1.主题 介绍怎样将Emacs定义为一个Pycharm外部编辑器. 2.准备工作 (1)Pycharm版本号为2.7或更高 (2)下载了downloadedEmacs并正确安装 3.配置Emacs 打 ...
- C# AutoMapper
http://www.cnblogs.com/xlhblogs/p/3356748.html
- HZK16应用实例
在C51中,HZK16汉字库的使用(mydows's Blog转载) 定义如下: unsigned char str[]="我" 个字节长度,内容为"我"的GB ...
- angular4开发过程中遇到的问题和知识点记录
1. angular2中的属性有什么区别,为什么会报错呢? 元素上有两种属性:property和attribute,attribute是通过getAttribute()和setAttribute()方 ...
- [Angular] Change component default template (ng-content, ng-template, ngTemplateOutlet, TemplateRef)
Here is the defulat tab header template: <ng-template #defaultTabHeader let-tabs="tabsX" ...