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

转载 2017年01月03日 12:54:08

目录(?)[+]

具体的代码,详见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. }  

相关文章推荐

swift传值:利用代理(delegate)和闭包(closure)

swift使用delegate和closure进行传值:类似oc的代理和block firstViewController.swift文件 // //  firstViewContro...

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

具体的代码,详见Demo:马上补充 rootViewController class ViewController: UIViewController,GetMessageDelegate { ...

swift中delegate与block的反向传值

swift中delegate与block的反向传值

[IOS]Protocol协议及委托代理(Delegate)传值-用代码寻找storyboard相应视图

Protocol协议及委托代理(Delegate)传值前言:因为Swift是不支持多继承的,所以很多时候都是用Protocol(协议)来代替。Protocol(协议)只能定义公用的一套接口,但不能提供...

IOS开发-Protocol协议及委托代理(Delegate)传值

前言:因为Object-C是不支持多继承的,所以很多时候都是用Protocol(协议)来代替。Protocol(协议)只能定义公用的一套接口,但不能提供具体的实现方法。也就是说,它只告诉你要做什么,但...
  • zhuobi0
  • zhuobi0
  • 2015年01月08日 22:20
  • 211

iOS学习11--多界面使用代理传值delegate

今个周末回家了,博客还没有更新!有时候会感觉da

iOS (页面间传值)协议和代理的使用 protocol delegate

最近搜关于协议和代理使用相关内容的时候发现雷同太多,这篇是很早前整理的我已经记不清是自己修改过了的,还是直接在往上复制下来的,不过感觉介绍还是蛮细致的 1、首先定义个一委托UIViewPassValu...

iOS学习笔记-----使用代理(Delegate)的页面传值

前言:因为Object-C是不支持多继承的,所以很多时候都是用Protocol(协议)来代替。Protocol(协议)只能定义公用的一套接口,但不能提供具体的实现方法。也就是说,它只告诉你要做什么,但...

iOS开发-Protocol协议及委托代理(Delegate)传值

前言:因为Object-C是不支持多继承的,所以很多时候都是用Protocol(协议)来代替。Protocol(协议)只能定义公用的一套接口,但不能提供具体的实现方法。也就是说,它只告诉你要做什么,但...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:swift之代理传值(delegate的用法)
举报原因:
原因补充:

(最多只允许输入30个字)