您的位置:首页 > 移动开发 > IOS开发

ios移动开发block回调和代理传参

2015-08-15 12:44 288 查看
比如微信的”个人信息“用户要修改自己的名字是,从B页面跳转(pop)回A页面,将在B页面修改的名字的值传回到A页面。

1、代理传参:

(1)将B页面的代理对象设置为A,先在B页面的视图控制器类的.h文件,定义代理对象的协议方法,

(2)先在B页面的视图控制器类的.m文件,在按钮事件中,当点击按钮时响应代理方法self.delegate respondsToSelect:并且调用协议方法代理传参

(3)在A页面中的m文件中,先在@interface中实现代理,然后实现代理协议的方法

(4)页面跳转的时候获取目标视图的控制器,并且将目标视图的控制器的类的代理设置为当前视图控制器的类,

代理传参总结:从哪里传递参数到哪一个页面,哪一个页面的类就是代理对象,而定义代理协议和方法的就是传参的页面的类。

2、block回调传参:有两个视图控制器,FirstViewController 和SecondViewController,要从SecondViewController中的nameText.text值传给FirstViewController中的nameLable.text

(1)在SecondViewController.h定义block块和属性

以上代码也可以简写成一句话:(nameBlock即是block方法也是参数)

(2)在SecondViewController.m中(将nameText的值传递给Block的参数name)

(3)FirstViewController.m(注意:block中的self都设置为__weak,避免循环引用)

总结:代理传参和block回调传参,如果只是简单的在两个页面传递参数,用block回调会是代码量大大减少,而且代码的整洁性也好比较好:但是代理传参的价值所在,在于在比如说我们写的一个框架,你可以通过实现这个框架的代理,来是用这个代理中的方法很好用的。回调只是把一个方法写在那里,当你代码执行到的需要调用的时候他才会去回调。可以通过设置断点来加深理解。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: