//
// 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,代理传值的更多相关文章

  1. Swift进阶之路(一)——单例模式、属性传值、代理传值、闭包传值

    一.单例模式 单例模式是设计模式中最简单的一种,甚至有些模式大师都不称其为模式,称其为一种实现技巧,因为设计模式讲究对象之间的关系的抽象,而单例模式只有自己一个对象. 关于单例,有三个重要的准则需要牢 ...

  2. swift中的传值

    光阴似箭,日月如梭,转眼间学习的旅途已经过了一大半了,忘着自己所敲过的成批的代码,看着自己付出和努力,默默地为自己这几个月的奋斗感到欣慰,不论学习的路途再怎么的艰辛,但是自己还是坚持过来了,回想着以往 ...

  3. iOS 页面间传值 之 属性传值,代理传值

    手机 APP 运行,不同页面间传值是必不可少,传值的方式有很多(方法传值,属性传值,代理传值,单例传值) ,这里主要总结下属性传值和代理传值. 属性传值:属性传值是最简单,也是最常见的一种传值方式,但 ...

  4. OS笔记047代理传值和block传值

    在两个不同的控制器之间传递数据,可以使用代理传值或者block传值. 例子是一个简单通讯录. 主界面如下: 添加联系人界面 查看/编辑联系人界面:默认是查看模式,点击编辑后进入编辑模式 编辑模式 数据 ...

  5. 四大传值详解:属性传值,单例传值,代理传值,block传值

    一:属性传值 传值情景:从前一个页面向后一个页面传值 a.在后一个页面,根据传值类型和个数,写属性 b.在前一个页面, 为属性赋值 c.在后一个页面, 使用值 例如: 第一个视图: #import & ...

  6. View 与 Controller 之间的delegate(代理)传值

    这个代理传值是经常使用的一种传值方式,下面介绍一种View 和 Controller 之间的代理传值方法. 先建立一个View视图 如 LoginView 是继承于一个UIView 在LoginVie ...

  7. iOS 页面跳转传值,属性传值,代理传值,代码块传值,单例传值,通知传值

    有时候我们在页面跳转的时候回传递相应的参数,如,你想把在第一个页面的文本框里的内容显示在第二个文本框中,或者你又想把第二个文本框中的内容改变之后到第一个页面的文本框中,所有,这个时候我们就要用到页面跳 ...

  8. iOS--页面间的代理传值(属性、代理(委托)、代码块、单例、通知)

    (一)属性传值 (二)代理(委托)传值 代理传值 适用于 反向传值 (从后往前传) 1.1 创建协议 及协议方法 在反向传值的页面(SecondViewController)中 1.2 创建协议类型的 ...

  9. iOS 再谈 代理传值,block反向传值

    本贴的例子是:有A和B两个界面,要实现的效果就是先让A跳转到B,然后B中有个颜色的参数,当B跳转到A时,把这个颜色的参数传递给A,在A中利用这个颜色改变自己界面的颜色. 第1步:在发送者(界面B)中, ...

随机推荐

  1. Apache二级域名实现

    Apache二级域名实现 首先,你的拥有一个有泛域名解析的顶级域名,例如: domain.com 其次,在 httpd.conf 中打开 mod_rewrite 之后,在 httpd.conf 的最后 ...

  2. Linux中brk()系统调用,sbrk(),mmap(),malloc(),calloc()的异同【转】

    转自:http://blog.csdn.net/kobbee9/article/details/7397010 brk和sbrk主要的工作是实现虚拟内存到内存的映射.在GNUC中,内存分配是这样的:  ...

  3. Vue全局异常捕获

    之前没注意过这么个小技巧 , 可能在Vue文档里也有  暂时先记下了 方便摘要 Vue全局配置 errorHandler可以进行全局错误收集,我们可以根据这个特性对前端异常做这样的处理:业务错误直接写 ...

  4. CPU负载监控

    #!/usr/bin/python #-*- encoding: utf-8 -*- import os import time while True: loadavg=os.popen(" ...

  5. 将打开的网页以html格式下载到本地

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. Selenium2+python自动化9-CSS定位语法【转载】

    前言 大部分人在使用selenium定位元素时,用的是xpath定位,因为xpath基本能解决定位的需求.css定位往往被忽略掉了,其实css定位也有它的价值,css定位更快,语法更简洁.这一篇css ...

  7. 【转】Talend作业设计模式和最佳实践-Part II

    转载地址:https://mp.weixin.qq.com/s?__biz=MzA3OTg1Mzk4Nw==&mid=2453261363&idx=1&sn=5674f1df8 ...

  8. SSOJ 2316 面积【DFS/Flood Fill】

    题目描述 编程计算由“1”号围成的下列图形的面积.面积计算方法是统计1号所围成的闭合曲线中点的数目. 如图所示,在10*10的二维数组中,“1”围住了15个点,因此面积为15. 题目大意:对于给定的1 ...

  9. POJ 2104 K-th Number (划分树)

                                                                K-th Number Time Limit: 20000MS   Memory ...

  10. Java-静态代码块,构造代码块,构造函数

    静态代码块:用staitc声明,jvm加载类时执行,仅执行一次 构造代码块:类中直接用{}定义,每一次创建对象时执行. 执行顺序优先级:静态块, main(),函数,构造块,构造方法. 构造函数 pu ...