block传值
2015-09-12 14:53
211 查看
block作为苹果主推的方法,同样是可以用来传值的。
两个页面,第一个页面有一个label,第二个页面有一个textField,将第二个页面输入的信息,在第一个页面显示。
按照代码中的步骤,并附有说明,应该很容易懂了。
第二个页面controller的.h文件(声明block)
第三步在第一个页面的controller的.m文件中(给block赋值)
第一个页面调到第二个页面的button的响应事件
第四步,也是最后一步在第二个页面的.m中(什么时候执行block)
!!还有一个注意的事件就是block的释放(苹果专门为block提供了释放方法)
两个页面,第一个页面有一个label,第二个页面有一个textField,将第二个页面输入的信息,在第一个页面显示。
按照代码中的步骤,并附有说明,应该很容易懂了。
第二个页面controller的.h文件(声明block)
#import <UIKit/UIKit.h> #pragma mark - 1.typedef一个block方便后面使用 typedef void(^PassValue)(NSString *text); @interface SecondViewController : UIViewController #pragma mark - 2.声明一个block属性(一定要用copy) @property(nonatomic, copy)PassValue passValue; @end
第三步在第一个页面的controller的.m文件中(给block赋值)
第一个页面调到第二个页面的button的响应事件
- (void)doTapButton:(UIBarButtonItem *)barButtonItem { SecondViewController *secondVC = [[SecondViewController alloc] init]; #pragma mark - 3.给下一个页面的block属性赋值;即将block的参数给自己的UILabel的text用于显示 secondVC.passValue = ^(NSString *text){ ((UILabel *)self.view.subviews[0]).text = text; }; [self.navigationController pushViewController:secondVC animated:YES]; [secondVC release]; }
第四步,也是最后一步在第二个页面的.m中(什么时候执行block)
#pragma mark - 4.页面消失的时候执行前一个页面传过来的block值 - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; if (self.passValue != nil) { // 将自己页面的textField的text作为参数传过去 self.passValue(((UITextField *)self.view.subviews[0]).text); } }
!!还有一个注意的事件就是block的释放(苹果专门为block提供了释放方法)
- (void)dealloc { #warning Block释放 Block_release(_passValue); [super dealloc]; }
相关文章推荐
- 大数的除法 不使用BigInteger Java实现
- 用liferay实现的增删改查例子-book管理系统
- vijos P1059积木城堡
- java的继承和接口
- 基于 Node-red实现opencv边缘检测节点
- Java 内部类
- Android常用工具类总结
- 关于性能优化
- 关于java中的异常问题 1
- IOS中如何异步加载图片(一)封装自己的ImageDownLoad类
- PresentViewController切换界面
- PHP相关文件操作函数和jquery.Form文件上传
- CATransition
- Linux 系统安全 及 lnmp 安装
- Android Material Design Library系列教程(二)
- Leetcode53: Maximum Depth of Binary Tree
- mitkPlanarFigure类
- 轻量级Java开源日志组件--ahct.log.JLogger
- 关于UIScrollView的几点总结
- Domino - SGU 101 (欧拉路径)