废话不多说,直接开始正文。
一、闭包回调 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个)
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。 |
标签: #Swift #通知传值 #废话不多说直接开始正文