对block的了解不是特别多,平常用代理用的比较多;
Block写法:
^(传入参数列){行为主体};
Block实体开头是“^”,接着是由小括号所包起来的参数列(比如 int a, int b, int c),行为主体由大括号包起来,行为主体可以用return回传值,如果没有参数列要写成: ^(void)。
在Block的{}体内,是不可以对外面的变量进行更改的
当然block还有很多的知识点,今天主要说一下传值的问题
使用Block作为property,实现两个页面之间传值,
//MyOneViewController.h 文件
//MyOneVC 中的点击事件
-(void)buttonPushClick:(UIButton *)button
{
MyTwoViewController ***myTwoVC = [[MyTwoViewController alloc] init];
myTwoVC.MyTwoVCBlock=^(NSString *textString){
[self refreshLabelText:textString];
};
[self.navigationController pushViewController:myTwoVC animated:YES];
}
//MyTwoVCBlock方法
-(void)refreshLabelText:(NSString *)textStr
{
NSLog(@"block回调中的方法---");
}
//MyTwoViewController.h 文件
@interface MyTwoViewController : UIViewController
//定义block
@property(nonatomic, copy) void (^MyTwoVCBlock)(NSString *textString);
@end
//MyTwoViewController.m 文件
//当点击按钮的时候将MyTwoViewVC中输入框的值传回到MyOneVC中
-(void)buttonPopClick:(UIButton *)button
{
//设置block
if (self.MyTwoVCBlock) {
//self.textFiled 是MyTwoVC中的输入框
self.MyTwoVCBlock(self.textFiled.text);
}
[self.navigationController popViewControllerAnimated:YES];
}