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回调会是代码量大大减少,而且代码的整洁性也好比较好:但是代理传参的价值所在,在于在比如说我们写的一个框架,你可以通过实现这个框架的代理,来是用这个代理中的方法很好用的。回调只是把一个方法写在那里,当你代码执行到的需要调用的时候他才会去回调。可以通过设置断点来加深理解。
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回调会是代码量大大减少,而且代码的整洁性也好比较好:但是代理传参的价值所在,在于在比如说我们写的一个框架,你可以通过实现这个框架的代理,来是用这个代理中的方法很好用的。回调只是把一个方法写在那里,当你代码执行到的需要调用的时候他才会去回调。可以通过设置断点来加深理解。
相关文章推荐
- ios 字号问题
- iOS 手势识别——拖拽
- iOS新的打包方式
- iOS开发之设计模式
- IOS开发之粒子效果
- iOS开发系列--地图与定位
- iOS 手势识别 ——长按和轻扫(swipe)
- 解决 iOS8 定位授权的问题
- iOS 手势识别 旋转和缩放(捏合)
- Ios 从无到有项目 MVVM模式(两)
- 自定义iOS7导航栏背景,标题和返回按钮文字颜色
- IOS第十天(1:QQ好友列表 ,自定义的headview,代理 ,通知 ,black的使用)
- IOS第九天(3:QQ聊天界面通知的使用)
- IOS第九天(2:QQ聊天界面键盘优化 和自动回复)
- webrtc 编译完成,安装时错误
- IOS第九天(1:QQ聊天界面frame模型)
- webrtc 编译汇编文件时错误
- IOS7 适配以及向下兼容问题
- iOS 手势识别——敲击 Tap
- ios基金会-XCode温馨提示