Swift 有关闭包回调的和通知传值的那些事(不坑版)

废话不多说,直接开始正文。

一、闭包回调

1.什么是闭包回调?

(1)通过定义闭包和调用闭包实现值在不同页面的传递。

2.为什么要用闭包回调?

(1)就是让一个视图中的值在另一个视图也能用。

(2)可以由自己来控制什么时候调用闭包,从而控制闭包中任务的执行。(调用才会执行)

3.闭包回调能做什么?

(1)假设有A——B两个页面,你想捅过点击B页面中TableView的Cell来让A中的Label显示你所点击的Cell中的文字,就可以用闭包回调来传递。你还可以设置在什么时候进行调用,从而控制进程。

4.怎么实现闭包回调?

如果要实现A ->B的一个传值

(1)在A页面中设置一个按钮,点击按钮就触发下面的函数,在函数里面设定接受传值的闭包。

@objc func coco1()-> Void{

        let view2 = ViewController2()

        view2.callBackClosure = {   (str,name) in

        print(str)

    }

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

    }

在B界面中,你也需要设定一个按钮,来调用该闭包,当此闭包被调用的时候,在A页面闭包中的内容将会被执行。

(1)先定义一个闭包

typealias SwiftClosure = (String,String) -> Void

(2)继承这个闭包的属性(在class里面写)

var callBackClosure:SwiftClosure?

(3)设置调用(在class里面写)​​​​​​​

@objc func coco1(){

        if callBackClosure != nil{

            callBackClosure!("xiaoming","kuku")

            self.navigationController?.popViewController(animated: true)

        }

    }

小结:闭包回调一般用来实现界面间的传值,通常和func函数实现传值共同使用。把大量数据通过func传过去--->然后用户进行选择--->通过闭包回调将用户选择的内容传递回来--->更新原界面,显示用户选择的内容。

实现过程中的小坑:

@objc func coco1()-> Void{

        let view2 = ViewController2()

        view2.callBackClosure = {   (str,name) in

        print(str)

    }

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

    }

在这段代码中,如果你将标红的view2换成ViewController2,就没办法传值了,有懂的小伙伴欢迎留言帮忙解释一下哈,感谢!!!

二、通知传值

实现方法

(1)传值方

  NotificationCenter.default.post(name: NSNotification.Name.init("ppp"), object: nil, userInfo: ["one":"The author is very handsome"])

(2)接收方

    NotificationCenter.default.addObserver(self, selector: #selector(push1), name: Notification.Name.init("ppp"), object: nil)

函数

@objc func push1(notif:Notification){

        print(notif.userInfo["one"])

    }

这样就okk了,userInfo中的数据是字典类型的,搞就完事了。

本期内容到这里就结束了,hxd们886!!

(强烈建议看一下“prician”这位漂亮小姐姐写的博客,嘎嘎棒,好人一胎180个)

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值