美文网首页IOS理论知识
SWIFT 闭包传值方式

SWIFT 闭包传值方式

作者: 真爱要有你才完美 | 来源:发表于2017-05-22 16:05 被阅读182次

闭包传值

闭包主要用于回调,这里我们还是模拟从详情界面传值到主界面,首先我们需要在详情界面为闭包取个别名,声明一个闭包类型,如下所示:

// 1、声明闭包类型

typealias Closure=(String?)->Void

其次在详情界面控制器中,声明闭包属性:

// 2、声明闭包属性

varclosure: Closure!

接下来,我们需要为详情界面声明一个闭包回调的方法,用于在主界面中调用,并且为闭包属性赋值,如下所示:

// MARK:- closure send values methods

-// 3、闭包传值调用方法

func callBack(closure: Closure!)

{

// 4、赋值闭包属性

self.closure = closure

}

现在闭包属性已经有值了,我们还需要在处理界面返回的方法中实现回调传值的逻辑,同样的,闭包类型为可选类型,我们可通过可选绑定判断闭包属性是否有值,如果有值,则通过闭包将需要传递到主界面的数据传递出去,代码如下:

func respondsToBtn(sender:UIButton) {

//5、可选绑定:判断closure属性是否不为nil,如果不为nil,则通过closure将文本信息回调到调用closure方法所在的控制器中;

if   let closure =self.closure {     

  closure(self.textField.text) 

                      }

self.dismissViewControllerAnimated(true,completion:nil)

}

现在详情界面已经配置完毕,最后一步,我们在主界面推送到详情界面的方法中,通过实例化的详情界面对象,调用闭包回调方法,然后打印数据即可,该方法在详情界面返回到主界面的时候会直接被调用,代码如下:

// MARK:- Events -func respondsToBtn(sender: UIButton) {letdetail_vc=DetailViewController()    detail_vc.callBack { (value:String?)->Voidinprint(value!)    }self.presentViewController(detail_vc, animated:true, completion: nil)}

Tips:

1、为闭包取别名,可在参数列表中将需要传递的参数写成形参;

2、设置一个方法持有当前block;

3、在合适的地方进行调用类似于代理;

4、在创建该对象的地方进行闭包方面的调用;

相关文章

  • Learning iOS D7 2017-10-30(传值方式

    Swift 4 四种传值方式 一:闭包传值(子vc传给父vc) 1.声明一个闭包(子vc) var closure...

  • swift传值

    本文将介绍swift中的传值方式:属性传值、代理传值、闭包传值、通知传值本文将在两个VC之间进行传值:HomeVC...

  • SWIFT 闭包传值方式

    闭包传值 闭包主要用于回调,这里我们还是模拟从详情界面传值到主界面,首先我们需要在详情界面为闭包取个别名,声明一个...

  • Swift:基础(十六)闭包

    Swift 闭包 闭包(Closures)是自包含的功能代码块,可以在代码中使用或者用来作为参数传值。 Swift...

  • iOS swift 学习(二)

    Swift 闭包闭包(Closures)是自包含的功能代码块,可以在代码中使用或者用来作为参数传值。Swift 中...

  • Swift-传值坑

    Swift中block、代理、通知、单例传值 block传值 定义一个闭包实现block主要分三步: 定义一个闭包...

  • swift 闭包传值

    在oc 中,反向传值可以采用block块来实现,同样,在swift 中也有类似的闭包,下面就闭包传值进行简单的介绍...

  • Swift 3.0 闭包使用及示例(附带Get、Post请求方法

    在swift中,实现回调传值常用的有三种方式: 闭包 closure 代理 delegate 通知 NSNotif...

  • Swift基础 : 闭包

    Swift 闭包 闭包(Closures)是包含功能的代码块, 可以在代码中使用或者用来作为参数传值 闭包的定义:...

  • Swift 闭包 传值

    语法 以下定义了一个接收参数并返回指定类型的闭包语法: { (parameters) -> return type...

网友评论

    本文标题:SWIFT 闭包传值方式

    本文链接:https://www.haomeiwen.com/subject/qvxixxtx.html