感觉代码块传值比协议代理更方便
代码块的传值跟代理一样 都是回调
//
// ViewController.m
// BlockValueDemo
//
// Created by linpeng on 14-3-4.
// Copyright (c) 2014年 linpeng. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)doAction:(id)sender {
SECONDViewController *VC = [[SECONDViewController alloc] init];
VC.send = ^(NSString *str)
{
//使用代码块等待 回调过来的数值
[self.labName setText : str ];
};
[self presentViewController:VC animated:YES completion:nil];
}
@end
定义代码块
//
// SECONDViewController.h
// BlockValueDemo
//
// Created by linpeng on 14-3-4.
// Copyright (c) 2014年 linpeng. All rights reserved.
//
#import <UIKit/UIKit.h>
typedef void (^ChangeValue)(NSString *str); //申明代码块
@interface SECONDViewController : UIViewController
@property (nonatomic,strong)ChangeValue send; //申明使用代码块
@property (weak, nonatomic) IBOutlet UITextField *txt;
- (IBAction)backAction:(id)sender;
@end
//
// SECONDViewController.m
// BlockValueDemo
//
// Created by linpeng on 14-3-4.
// Copyright (c) 2014年 linpeng. All rights reserved.
//
#import "SECONDViewController.h"
@interface SECONDViewController ()
@end
@implementation SECONDViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)backAction:(id)sender {
//回调数值
self.send(self.txt.text);
[self dismissViewControllerAnimated:YES completion:nil];
}
@end