关闭

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

62人阅读 评论(0) 收藏 举报
分类:

目录(?)[+]

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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:98235次
    • 积分:1345
    • 等级:
    • 排名:千里之外
    • 原创:17篇
    • 转载:145篇
    • 译文:0篇
    • 评论:7条
    文章分类
    最新评论