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)

        }

  • 相关阅读:
    vue element-ui 饿了么布局,gutter间距碰上bordr 会失效
    Linux 常用命令
    阿里云部署,ubuntu, 连接服务器 |更新源| 安装node |安装mysql
    常用 shell 命令 chmod | root
    node 进程管理 child_process [spawn,exec] | 珠峰培训node正式课 网络爬虫
    html2canvas用法的总结(转载)
    使用nvm-windows安装nodejs遇到的问题(转载)
    Can’t call setState (or forceUpdate) on an unmounted component 警告处理方法
    webpack 搭建问题汇总
    webpack执行命令参数
  • 原文地址:https://www.cnblogs.com/lwk151124/p/5779591.html
Copyright © 2011-2022 走看看