zoukankan      html  css  js  c++  java
  • swift 协议传值的实现

    首先呢说下结构 

    一个ViewController 

    一个ModelViewController

    在ModelViewController中定义了一个协议

    这个逻辑 从第一个界面进入第二个界面  从第二个界面回到第二个界面并通过协议传值回到第一个界面 打印输出值

    ModelViewController.swift

    protocol lwkDelegate {//定义协议

        func changeString(newString:String)

    }

    在这个ModelViewControler类中实现一些简单的逻辑

    class ModelViewController: UIViewController{

        

        

        var delegate:lwkDelegate?

        var btn:UIButton?

        

        override func viewDidLoad() {

            super.viewDidLoad()

            btn=UIButton(frame:CGRectMake(110,80,100,20))

            btn!.backgroundColor=UIColor.grayColor()

            btn!.setTitle("传值回第一个界面",forState:.Normal)

            //绑定事件

            btn!.addTarget(self,action:#selector(ModelViewController.btnOnClick),forControlEvents: UIControlEvents.TouchUpInside)

            

            self.view.addSubview(btn!)

        }

        func btnOnClick(){

            let str:String = "liuweikai"

            delegate!.changeString(str)//调用协议方法

            self.dismissViewControllerAnimated(true, completion: nil)

        }

    在ViewController类中

    class ViewController: UIViewController,lwkDelegate{//接受协议

        var btn:UIButton?

        

        override func viewDidLoad() {

            super.viewDidLoad()

            // Do any additional setup after loading the view, typically from a nib.

            

            btn=UIButton(frame:CGRectMake(110,80,100,20))

            btn!.backgroundColor=UIColor.greenColor()

            btn!.setTitle("去二个界面",forState:.Normal)

            //绑定事件

            btn!.addTarget(self,action:#selector(ViewController.btnOnClick),forControlEvents: UIControlEvents.TouchUpInside)

            

            self.view.addSubview(btn!)

        }

        

        func btnOnClick(){

            let vc = ModelViewController()

            vc.delegate = self //委托方

            

            self.presentViewController(vc, animated: true, completion: nil)

    //        self.navigationController?.pushViewController(vc, animated: true)

        }

        func changeString(newString:String) {//实现协议的方法

            

            print(newString)

        }

  • 相关阅读:
    js 生成m位随机数入门实例
    解决JS浮点数(小数)计算加减乘除的BUG
    JS 用sort方法排序字符串
    CSS3 transform rotate(旋转)锯齿的解决办法
    常用JS正则表达式
    Javascript 利用a标签自动解析URL分析网址实例
    移动前端头部标签(HTML5 head meta)
    JavaScript判断移动端及pc端访问不同的网站
    mysql 按日期分组
    css hover控制其他元素
  • 原文地址:https://www.cnblogs.com/lwk151124/p/5779591.html
Copyright © 2011-2022 走看看