swift -NavigationController,代理传值
//
// ViewController.swift
// NavigationController
// import UIKit
import Foundation class ViewController: UIViewController,FontSizeChangDelegate { var myLabel :UILabel? ;//声明一个UILabel对象 全局的
override func viewDidLoad() {
super.viewDidLoad()
//self.title = "百度";
self.navigationItem.title = "百度"; let nextItem = UIBarButtonItem(title: "下一页", style: .Plain, target: self, action: "nextPage");
self.navigationItem.rightBarButtonItem = nextItem; //放一个Label能够显示文字
let rect = CGRect(x: 0, y: 100, width: 320, height: 44);
myLabel = UILabel(frame: rect);
myLabel!.text = "欢迎来到百度";
self.view.addSubview(myLabel!); // Do any additional setup after loading the view, typically from a nib.
} func nextPage(){
NSLog("按钮被点击了");
let svc = SubViewController(); //设置这个协议 svc.delegate = self;
self.navigationController?.pushViewController(svc, animated: true); }
// 代理方法
func fontSizeDidChange(controller: SubViewController, fontSize: Int) {
println("controller is\(controller) fontsize:\(fontSize)");
let font = UIFont.systemFontOfSize(Float(fontSize));//这里有错误
myLabel!.font = font;
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
} }
//
// SubViewController.swift
// NavigationController
// import UIKit
import Foundation
//定义一个协议 protocol FontSizeChangDelegate:NSObjectProtocol{
//定义的一个协议函数/代理的一个函数
//參数1 当前controller本身
//參数2 字体大小
func fontSizeDidChange(controller:SubViewController,fontSize:Int);
} class SubViewController: UIViewController {
var fontSize:Int = 20;
//定义一个delegate对象
var delegate:FontSizeChangDelegate?;
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor .whiteColor(); self.title = "Page2";
//self.backgroundColor = UIColor .whiteColor();
// Do any additional setup after loading the view.
var btn = UIButton.buttonWithType(.System) as UIButton;
var frame = CGRect(x: 100, y: 100, width: 100, height: 100);
btn.frame = frame;
btn.setTitle("增大字体大小", forState: .Normal);
btn.addTarget(self, action: "clickMe:", forControlEvents:.TouchUpInside);
self.view.addSubview(btn);
}
func clickMe(sender:UIButton){
//self.navigationController? .popToRootViewControllerAnimated(true);
fontSize++
println("fontsize is\(fontSize)"); if((delegate) != nil)
{
//调用里面的协议方法
delegate?.fontSizeDidChange(self,fontSize:fontSize);
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
} /*
// MARK: - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject? ) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}
*/ }
swift -NavigationController,代理传值的更多相关文章
- Swift进阶之路(一)——单例模式、属性传值、代理传值、闭包传值
一.单例模式 单例模式是设计模式中最简单的一种,甚至有些模式大师都不称其为模式,称其为一种实现技巧,因为设计模式讲究对象之间的关系的抽象,而单例模式只有自己一个对象. 关于单例,有三个重要的准则需要牢 ...
- swift中的传值
光阴似箭,日月如梭,转眼间学习的旅途已经过了一大半了,忘着自己所敲过的成批的代码,看着自己付出和努力,默默地为自己这几个月的奋斗感到欣慰,不论学习的路途再怎么的艰辛,但是自己还是坚持过来了,回想着以往 ...
- iOS 页面间传值 之 属性传值,代理传值
手机 APP 运行,不同页面间传值是必不可少,传值的方式有很多(方法传值,属性传值,代理传值,单例传值) ,这里主要总结下属性传值和代理传值. 属性传值:属性传值是最简单,也是最常见的一种传值方式,但 ...
- OS笔记047代理传值和block传值
在两个不同的控制器之间传递数据,可以使用代理传值或者block传值. 例子是一个简单通讯录. 主界面如下: 添加联系人界面 查看/编辑联系人界面:默认是查看模式,点击编辑后进入编辑模式 编辑模式 数据 ...
- 四大传值详解:属性传值,单例传值,代理传值,block传值
一:属性传值 传值情景:从前一个页面向后一个页面传值 a.在后一个页面,根据传值类型和个数,写属性 b.在前一个页面, 为属性赋值 c.在后一个页面, 使用值 例如: 第一个视图: #import & ...
- View 与 Controller 之间的delegate(代理)传值
这个代理传值是经常使用的一种传值方式,下面介绍一种View 和 Controller 之间的代理传值方法. 先建立一个View视图 如 LoginView 是继承于一个UIView 在LoginVie ...
- iOS 页面跳转传值,属性传值,代理传值,代码块传值,单例传值,通知传值
有时候我们在页面跳转的时候回传递相应的参数,如,你想把在第一个页面的文本框里的内容显示在第二个文本框中,或者你又想把第二个文本框中的内容改变之后到第一个页面的文本框中,所有,这个时候我们就要用到页面跳 ...
- iOS--页面间的代理传值(属性、代理(委托)、代码块、单例、通知)
(一)属性传值 (二)代理(委托)传值 代理传值 适用于 反向传值 (从后往前传) 1.1 创建协议 及协议方法 在反向传值的页面(SecondViewController)中 1.2 创建协议类型的 ...
- iOS 再谈 代理传值,block反向传值
本贴的例子是:有A和B两个界面,要实现的效果就是先让A跳转到B,然后B中有个颜色的参数,当B跳转到A时,把这个颜色的参数传递给A,在A中利用这个颜色改变自己界面的颜色. 第1步:在发送者(界面B)中, ...
随机推荐
- android studio 无法调试debug,(能运行安装)
请检查清单文件的改为true就可以调试了 android:debuggable="true"
- openshift 云平台基于kubernetes
转载:https://www.kubernetes.org.cn/3208.html 目前红帽的核心产品PaaS平台OpenShift,最初在2012年释出时是使用自家开发的容器调度工具,但在2014 ...
- ECShop安装实录
版本: ecmoban_V2.7.3_UTF8_20150623 来源: 官网 一. 给 C:\Windows\temp目录增加 IIS_Users 完全权限. 二. 安装报错: Warning: d ...
- 1.tornado基础
import tornado.web ''' tornado基础web框架模块 ''' import tornado.ioloop ''' tornado的核心循环IO模块,封装了linux的epol ...
- Appium+python自动化22-Appium Desktop【转载】
Appium Desktop 原滋原味的官方文档 Appium Desktop是一款用于Mac.Windows和Linux的开源应用,它提供了Appium自动化服务器在一个漂亮灵活的UI中的强大功能. ...
- 在Centos中使用goaccess查看Nginx日志
在Nginx的配置文件中配置一下access日志: log_format access ‘$remote_addr – $remote_user [$time_local] “$request” ‘‘ ...
- 携程ELK
http://www.360doc.com/content/15/1203/00/26186435_517522477.shtml
- 30 分钟学会 Flex 布局
30 分钟学会 Flex 布局 有酒 617 人赞同了该文章 为什么我要写这一篇关于 Flex 布局的教程? 因为它十分简单灵活,区区简单几行代码就可以实现各种页面的的布局,以前我在学习页面布局的 ...
- Git从入门到速成
什么是Git Git是Linux发明者Linus开发的一款新时代的版本控制系统,那什么是版本控制系统呢?怎么理解?网上一大堆详细的介绍,但是大多枯燥乏味,对于新手也很难理解,这里我只举几个例子. 熟悉 ...
- [COCI2015]JABUKE
题目大意: 一个$n\times m(n,m\leq500)$的网格图中有若干个标记点,有$q(q\leq10^5)$个操作,每次新加入一个标记点,并询问和新加入点最近的点的距离. 思路: 记录对于每 ...