Swift语言实现代理传值

需求:利用代理实现反响传值(以下例子采用点击第二个视图控制器中的按钮来改变第一个视图控制器中的Label的内容)

一、创建RootViewController

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. import Foundation  
  2. import UIKit  
  3.   
  4. class RootViewController:UIViewController,ChangeWordDelegate{  
  5.     var qzLabel:UILabel?  
  6.     override func viewDidLoad(){  
  7.         super.viewDidLoad()  
  8.         self.title = "RootViewController"  
  9.         let rightBtn:UIBarButtonItem = UIBarButtonItem(title:"下一页",style:.Plain,target:self,action:"nextPage")  
  10.         self.navigationItem.rightBarButtonItem = rightBtn  
  11.           
  12.         let rect = CGRect(x:0,y:200,width:320,height:50)  
  13.         qzLabel = UILabel(frame:rect)  
  14.         qzLabel!.text = "秦志伟"  
  15.         qzLabel!.textAlignment = NSTextAlignment.Center  
  16.         self.view.addSubview(qzLabel)  
  17.           
  18.           
  19.     }  
  20.     func nextPage(){  
  21.         let svc = SecondViewController()  
  22.         svc.delegate = self  
  23.         self.navigationController.pushViewController(svc,animated:true)  
  24.     }  
  25.     func changeWord(controller:SecondViewController,string:String){  
  26.         qzLabel!.text = string  
  27.         println("qzLabel.text == \(string)")  
  28.     }  
  29. }  


二、创建SecondViewController

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. import Foundation  
  2. import UIKit  
  3.   
  4. //定义协议改变Label内容  
  5. protocol ChangeWordDelegate:NSObjectProtocol{  
  6.     //回调方法  
  7.     func changeWord(controller:SecondViewController,string:String)  
  8. }  
  9. class SecondViewController:UIViewController{  
  10.     var temp = 0  
  11.     var delegate:ChangeWordDelegate?  
  12.     override func viewDidLoad(){  
  13.         super.viewDidLoad()  
  14.         self.title = "SecondViewController"  
  15.         self.view.backgroundColor = UIColor.greenColor()  
  16.         let rect = CGRect(x:50,y:200,width:150,height:50)  
  17.         var myButton = UIButton(frame:rect)  
  18.         myButton.center = CGPointMake(160,200)  
  19.         myButton.setTitle("改变Label内容",forState:.Normal)  
  20.         myButton.addTarget(self,action:"btnClicked",forControlEvents:.TouchUpInside)  
  21.         self.view.addSubview(myButton)  
  22.           
  23.     }  
  24.     func btnClicked(){  
  25.         temp++  
  26.         println("我被点击了!")  
  27.         if(delegate){  
  28.             delegate?.changeWord(self,string:"秦志伟"+String(temp))  
  29.         }  
  30.           
  31.     }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值