Block初窥探(逻辑+demo) 简单易懂

初探下Block,也让自己知道简单的Block使用并没有想象中的那么艰难。
下面所有的都是自己语言组织的,非常浅显的东西+Demo,大神止步哟。

Block初了解

  • 一种比较特殊的数据类型,保存一段代码块,其它地方需要使用的时候直接调用即可。一般用Copy修饰。
  • Block的格式
  • 声明
    返回值(^block变量名)(参数).
    例如:typedef void(^valueBlock)(NSString *);
  • 调用Block中的代码块.
    block变量名(实参);
    这些直接看个Demo吧。
    现在的需求:
    两个界面,ViewController1(简称VC和VC2 VC2中一个输入框,一个Button。 点击Button将输入框中的value传给VC1中的一个Label

思路: 应该是在VC2中定义block。点击事件中将输入框中的值传进去。push到VC1之后,在VC1中调用Block将其显示出来。

代码:

  • 首先是VC2中的定义声明:
    //声明Block typedef void(^valueBlock)(NSString *);

  • 定义Block:
    @property (nonatomic, copy) valueBlock block01;

  • VC2中的Btn点击事件:
    - (IBAction)btn:(id)sender { self.block01(_textField.text); [self.navigationController popViewControllerAnimated:YES]; }

返回到VC1界面的处理:
**初始化VC2控制器,调用VC2中的变量

VC2.block = ^(参数){
//代码块
};

[附上两张代码图 代码不多,所以就不上了]
- (IBAction)sendBtn:(id)sender {
SecondViewController *sec = [self.storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
sec.block01 = ^(NSString *sss){

    self.label01.text = sss;
};
[self.navigationController pushViewController:sec animated:YES];
}
Block初窥探(逻辑+demo) 简单易懂_第1张图片
01.png
Block初窥探(逻辑+demo) 简单易懂_第2张图片
02.png

总结 : 传值给前面界面的时候写的部分容易弄混淆:
sec.block01 = ^(NSString *aaa){ self.label01.text = aaa; };

PS: 大家一起学习,有不懂的地方一起专研。这是初探。写的不好的地方勿喷哈。谢谢~

你可能感兴趣的:(Block初窥探(逻辑+demo) 简单易懂)