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)

    }

转载于:https://www.cnblogs.com/lwk151124/p/5779591.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值