博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
block传值
阅读量:5051 次
发布时间:2019-06-12

本文共 1325 字,大约阅读时间需要 4 分钟。

block作为苹果主推的方法,同样是可以用来传值的。

两个页面,第一个页面有一个label,第二个页面有一个textField,将第二个页面输入的信息,在第一个页面显示。

按照代码中的步骤,并附有说明,应该很容易懂了。

 

第二个页面controller的.h文件(声明block)

#import 
#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];}

  

转载于:https://www.cnblogs.com/sqdhy-zq/p/4803013.html

你可能感兴趣的文章
统计学习方法笔记 -- 朴素贝叶斯
查看>>
PyQt5+python+pycharm开发环境配置
查看>>
python做语音信号处理
查看>>
App被拒选择回复还是重新提审,如何选择最高效的应对方式?
查看>>
第一阶段冲刺(第二天)
查看>>
四、优化及调试--网站优化--SEO在网页制作中的应用
查看>>
23个常用的文件处理方法
查看>>
51Nod 1182 完美字符串
查看>>
十天冲刺(5)
查看>>
C语言中关于strcry 引发的思考
查看>>
创建一个数组有三种方法
查看>>
Mysql了解及安装
查看>>
redis的string和list
查看>>
marquee标签详解
查看>>
黑马 StringBuffer
查看>>
dedecms /include/uploadsafe.inc.php SQL Injection Via Local Variable Overriding Vul
查看>>
ThinkPHP--浏览历史
查看>>
iptables
查看>>
mysql常用函数
查看>>
xml=>数组
查看>>