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_4】swift之代理传值(delegate的用法)

具体的代码,详见Demo:马上补充 rootViewController class ViewController: UIViewController,GetMessageDelegate { ...
  • Riven_wn
  • Riven_wn
  • 2015年06月23日 14:06
  • 7344

Swift 协议代理传值(十)

Objective-C这里演示反向传值SecondVC.h @protocol sendValueDelegate - (void)sendValueString:(NSString *)str; ...
  • sinat_30162391
  • sinat_30162391
  • 2016年04月01日 15:17
  • 931

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

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

Swift中Delegate的正确使用姿势

目标 在A类里面声明一个ADelegate的代理,B类遵循并使用ADelegate定义的函数。 实现A.swift//创建协议 protocol ADelegate:NSObjectProto...
  • feosun
  • feosun
  • 2017年06月22日 23:29
  • 1120

Swift3.0 代理传值,属性传值

1.代理传值()MapViewController传值 protocol MapViewDelegate : NSObjectProtocol {     func selectedAddr...
  • WUYANYANstrong
  • WUYANYANstrong
  • 2016年11月04日 13:27
  • 1814

Mac OS开发中,委托、代理、协议、数据源等几个重要概念

1、关于委托和协议 委托——delegate,顾名思义,就是委托别人办事,就是说当一件事情发生的时候,自己不去处理,让别人来处理。 协议——protocol,使用了这个协议后,就要按照这个协议来办事,...
  • LiuyangRiver
  • LiuyangRiver
  • 2015年09月01日 10:53
  • 5869

swift开发笔记9 - 正向和反向页面传参

swift 正向和反向传值,正向用segue,反向用回调函数
  • baixiaozhe
  • baixiaozhe
  • 2015年10月01日 11:53
  • 743

swift中的反向代理传值与Object-C中的对比

//大体意思为我们在sub类中声明一个协议,协议中有2个方法,然后Root类遵守协议,并代理实现这两个方法,然后再sub中进行反向传值给Root类实现Root类的改变 我们先讲OC中的 当...
  • see_you_in_the_past
  • see_you_in_the_past
  • 2014年12月17日 14:55
  • 646

Swift语言实现代理传值(RegisterViewController和LoginViewController)

被代理对象定义协议方法(RegisterViewController) //1.定义协议方法 protocol RegisterDelegate { func registerZh...
  • wenzfcsdn
  • wenzfcsdn
  • 2015年03月05日 21:08
  • 525

Swift 传值之代理传值

在Swift中,传值的方法有很多,都很简便,之前介绍了属性传值,swift的属性传值可以从下级页面传到上级页面,现在来介绍如何用代理传值。...
  • zhangjitao_boke
  • zhangjitao_boke
  • 2016年01月29日 14:14
  • 906
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:swift之代理传值(delegate的用法)
举报原因:
原因补充:

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