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)

        }

  • 相关阅读:
    c#基础加强版之方法控制流复习-3控制台打印密码
    c#基础加强版之方法控制流复习-2变量是否初始化的问题
    c#基础加强版之方法控制流复习-1关于方法的讲解
    小菜学try语句,又被trouble给catch住了
    JQuery--CSS操作
    JavaScript--DOM操作
    JavaScript--选择器
    JQuery--jQuery对象与DOM对象
    JavaScript--DOM编程
    JDBC--调用函数&存错过程
  • 原文地址:https://www.cnblogs.com/lwk151124/p/5779591.html
Copyright © 2011-2022 走看看