swift之代理传值(delegate的用法)

目录(?)[+]

具体的代码,详见Demo:链接: http://download.csdn.net/download/riven_wn/9401970


rootViewController

  1. class ViewController: UIViewController,GetMessageDelegate  
  2. {  
  3.     var _button:UIButton?  
  4.     var _label:UILabel?  
  5.   
  6.     override func viewDidLoad()  
  7.     {  
  8.         super.viewDidLoad()  
  9.           
  10.         self.title = "RootViewController"  
  11.         //创建label 用来接收传过来的值  
  12.         _label = UILabel(frame: CGRect(x: 50, y100, width220, height44))  
  13.         _label?.text = "get message from next page"  
  14.           
  15.         _label?.textAlignment = NSTextAlignment.Center  
  16.         _label?.backgroundColor = UIColor.cyanColor()  
  17.         self.view.addSubview(_label!)  
  18.           
  19.         //创建button 点击跳转到下一个界面  
  20.         _button = UIButton(frame:CGRect(x:60,y:200,width:200,height:44))  
  21.         _button?.setTitle("go to next page", forState: UIControlState.Normal)  
  22.         _button?.setTitleColor(UIColor.yellowColor(), forState: UIControlState.Normal)  
  23.         _button?.backgroundColor = UIColor.blueColor()  
  24.         _button?.addTarget(self, action"nextPage", forControlEvents: UIControlEvents.TouchUpInside)  
  25.         self.view.addSubview(_button!)  
  26.     }  
  27.   
  28.     //push  
  29.     func nextPage()  
  30.     {  
  31.         let nextVC = NextViewController()  
  32.         //指定代理  
  33.         nextVC.delegate = self  
  34.         self.navigationController!.pushViewController(nextVC,animated:true)  
  35.     }  
  36.     //接收传过来的值  
  37.     func getMessage(controller:NextViewController,string:String)  
  38.     {  
  39.         _label?.text = string  
  40.         if(string == "")  
  41.         {  
  42.             _label?.text = "null"  
  43.         }  
  44.    
  45.     }  
  46.   
  47.   
  48. }  

secondViewController

  1. //创建协议  
  2. protocol GetMessageDelegate:NSObjectProtocol  
  3. {  
  4.     //回调方法 传一个String类型的值  
  5.     func getMessage(controller:NextViewController,string:String)  
  6. }  
  7. class NextViewController: UIViewController  
  8. {  
  9.     var delegate:GetMessageDelegate?  
  10.     var _textField:UITextField?  
  11.     override func viewDidLoad()  
  12.     {  
  13.         super.viewDidLoad()  
  14.         self.title = "SecondViewController"  
  15.         self.view.backgroundColor = UIColor.whiteColor()  
  16.           
  17.         //创建textField 用来输入要传的值  
  18.         _textField = UITextField(frame: CGRect(x: 60, y100, width200, height44))  
  19.         _textField?.borderStyle = UITextBorderStyle.RoundedRect  
  20.         _textField?.placeholder = "input sth to send back"  
  21.         self.view.addSubview(_textField!)  
  22.   
  23.         //创建返回的button  
  24.         var myButton = UIButton(frame:CGRect(x:60,y:200,width:200,height:44))  
  25.         myButton.center = CGPointMake(160,200)  
  26.         myButton.setTitle("send message back",forState:.Normal)  
  27.         myButton.addTarget(self,action:"goBack",forControlEvents:.TouchUpInside)  
  28.         myButton.backgroundColor = UIColor.blueColor()  
  29.         self.view.addSubview(myButton)  
  30.     }  
  31.   
  32.     func goBack()  
  33.     {  
  34.         //调用代理方法  
  35.         if((delegate) != nil)  
  36.         {  
  37.             delegate?.getMessage(self,string:_textField!.text)  
  38.             self.navigationController?.popToRootViewControllerAnimated(true)  
  39.         }  
  40.           
  41.     }  
  42. }  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值