swift的闭包传值

9 篇文章 0 订阅

在oc中我们使用block进行传值,相比其他的方法更加紧凑,在swift中闭包,完全保持这个优点。

下面我们来看看闭包传值的三部曲,

我们首先假设一种场景,我们从A控制器跳转B控制器,在B控制器,跳转回A控制器的时候,我们需要将B控制器的值传回A控制器,我们看看怎么做;
第一步,在B控制器定义一个闭包类型;

//声明一个闭包类型,并将该类型的闭包作为B控制器的属性

typealias myClosure = (Courier)->Void

import UIKit

class SelectExpressTableViewController: UITableViewController {


    var closure1:myClosure?
}

//第二步。在A控制器跳转到B控制器时,给B控制器的闭包属性赋值

//闭包传值并跳转;

func addExp(){

    let vc = SelectExpressTableViewController()
    //给将要跳转的控制器的闭包属性赋值;
    vc.closure1 = { (cour:Courier) ->Void in
        self.receiptView.ExpTF.text = cour.name
        self.receiptView.expNo=cour.id
        print("传值:"+cour.name!)
    }

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


}

//在B控制器跳转回A之前,回调闭包,并将B控制器的中需要传回来的参数,通过闭包传出来,用法和BLOCK完全一样,只是写法不同而已

  override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let courier :Courier = self.couriersArray[indexPath.row]
        if self.closure1 != nil{
            self.closure1!(courier)
        }


        self.navigationController?.popViewController(animated: true)

  }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值