iOS 简单使用Block回调

来源:互联网 发布:php邮箱验证点击激活 编辑:程序博客网 时间:2024/06/07 05:44

创建两个ViewController,RootViewController和FirstViewController,将RootViewController设为根视图

//FirstViewController.h#pragma mark -知识点  block回调第一步:重定义block类型//将系统现有的类型定义一个别名 : typedef NSInteger INT;//FirstBlock 是别名,等同void(^)(UIColor *color)typedef void(^FirstBlock)(UIColor *color);@interface FirstViewController : UIViewController#pragma mark -知识点  block回调第二步:声明方法,将block作为方法的参数封装到方法中- (void)changeColorWithString:(NSString *)string block:(FirstBlock)block;//定义block属性//********特别注意:block属性必须要用copy修饰,retain和assign无效@property (nonatomic, copy)FirstBlock  myBlock;@end
//FirstViewController.m- (void)dealloc{    Block_release(_myBlock); //释放block    [super dealloc];}- (void)viewDidLoad {    [super viewDidLoad];    // Do any additional setup after loading the view.    self.view.backgroundColor = [UIColor whiteColor];UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];    btn.backgroundColor = [UIColor brownColor];    [btn addTarget:self action:@selector(action:) forControlEvents:UIControlEventTouchUpInside];    btn.frame = CGRectMake(100, 100, 50, 50);    [self.view addSubview:btn];    [btn setTitle:@"pop" forState:UIControlStateNormal];}- (void)action:(UIButton *)btn{    //执行block    self.myBlock([UIColor purpleColor]);    [self.navigationController popViewControllerAnimated:YES];}#pragma mark -知识点  block回调第三步:实现方法- (void)changeColorWithString:(NSString *)string block:(FirstBlock)block{    self.navigationItem.title = string;    //给属性赋值    self.myBlock = block;}
//RootViewController.m  (引入FirstViewController头文件)- (void)viewDidLoad {    [super viewDidLoad];    // Do any additional setup after loading the view.    self.view.backgroundColor = [UIColor cyanColor];    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];    btn.backgroundColor = [UIColor brownColor];    [btn addTarget:self action:@selector(action:) forControlEvents:UIControlEventTouchUpInside];    btn.frame = CGRectMake(100, 100, 50, 50);    [self.view addSubview:btn];    [btn setTitle:@"push" forState:UIControlStateNormal];}- (void)action:(UIButton *)btn{    FirstViewController *firstVC = [[FirstViewController alloc] init];    //push时隐藏掉tabbar    firstVC.hidesBottomBarWhenPushed = YES;    [self.navigationController pushViewController:firstVC animated:YES];#pragma mark -知识点  block回调第四步:调用方法,实现block    [firstVC changeColorWithString:@"第二页" block:^(UIColor *color) {        //接收回调回来的值        self.view.backgroundColor = color;    }];    [firstVC release];}

1

2

3

2 0
原创粉丝点击