iOS页面间传值的两种方式
2016-01-05 19:54
357 查看
假设:由A界面跳转到B界面,A把Person类的name属性带到B界面,现在在B界面修改了Person类的name属性,需要将修改后的name回传到A界面
一、利用协议来实现回调传值
1.1 在B.h中声明一个delegate
1.2 在B.h中定义一个delegate变量
1.3
A.h中实现<ChangeNameDelegate>代理
1.4 再到A.m中实现ChangeNameDelegate代理的personNameChange方法
1.5 A中创建B对象时,需要给B对象中的delegate赋值,一般将A对象赋给delegate
1.6 B中修改了name后,调用_delegate的personNameChange方法
二、用Block来实现上面的回调传值
2.1 在B.h定义一个Block
2.2 在B.h中定义一个Block变量
2.3 在A中创建B对象时,要给A中的block赋值
2.4 在B中修改值后,调用block回传新值
一、利用协议来实现回调传值
1.1 在B.h中声明一个delegate
@protocol ChangeNameDelegate -(void) personNameChange:(NSString *)name; @end
1.2 在B.h中定义一个delegate变量
@property (nonatomic, assign) id<ChangeNameDelegate> delegate;
1.3
A.h中实现<ChangeNameDelegate>代理
1.4 再到A.m中实现ChangeNameDelegate代理的personNameChange方法
1.5 A中创建B对象时,需要给B对象中的delegate赋值,一般将A对象赋给delegate
1.6 B中修改了name后,调用_delegate的personNameChange方法
if ([_delegate respondsToSelector:@selector(personNameChange:)]) { [_delegate personNameChange:newName]; }
二、用Block来实现上面的回调传值
2.1 在B.h定义一个Block
typedef void(^ChangeNameBlock)(NSString *newName);
2.2 在B.h中定义一个Block变量
@property (nonatomic,copy) ChangeNameBlock block;
2.3 在A中创建B对象时,要给A中的block赋值
2.4 在B中修改值后,调用block回传新值
if (_block) { _block(newName); }
相关文章推荐
- asp.net Context.Handler 页面间传值方法第1/2页
- ASP.NET 页面之间传递值方式优缺点比较
- asp.net页面传值测试实例代码(前后台)
- asp.net 页面传值的几个方法
- 基于Jquery ajax技术实现间隔N秒向某页面传值
- ASP.NET实现页面传值的几种方法小结
- iOS页面传值总结
- ASP.NET中页面传值技巧
- Response.Redirect(),Server.Transfer(),Server.Execute()的区别与网站优化
- 网站访问量的统计(Application和Session应用)
- 页面之间的传值与接收以及解决中文乱码
- 【项目经验】——ASP.NET页面间传值
- 使用storyboard实现页面跳转,简单的数据传递
- 页面之间如何传递特殊字符
- MVC系列之一:Servlet、Jsp的传值问题
- IOS学习笔记30—两个ViewController间传值(一)
- IOS学习笔记31—两个ViewController间传值(二)
- json格式的字符串如何进行处理回车换行
- Block语法及页面传值
- spring boot 页面之间相互传值二