码迷,mamicode.com
首页 > 移动开发 > 详细

iOS block使用

时间:2015-08-10 16:21:25      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:

AViewController.h
@interface AViewController : UIViewController {
    UILabel *valueLabel;//?来接收SecondViewController传回的值
}
@end
实现AViewController.m
- (void)viewDidLoad
{
    [super viewDidLoad];
    valueLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 100, 300, 50)];
    [self.view addSubview:valueLabel];

    UIBarButtonItem *nextBtn = [[UIBarButtonItem alloc] initWithTitle:@"next"
                style:UIBarButtonItemStylePlain target:self action:@selector(nextClick)];
    self.navigationItem.rightBarButtonItem = nextBtn;

}
- (void)nextClick
{
   BViewController *svc = [[BViewController alloc] init];
    svc.backValue = ^(NSString *strValue) {//设置SecondViewController?边的block属性,
这是本程序的关键
    valueLabel.text = strValue;
};
    [self.navigationController pushViewController:svc animated:YES];

}

BViewController.h
@interface BViewController : UIViewController
@property (nonatomic, copy) void (^backValue)(NSString *strValue);
@property (nonatomic, retain) UITextField *text;
@end

实现BViewController.m
@implementation BViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor whiteColor];
    text = [[UITextField alloc] initWithFrame:CGRectMake(10, 50, 300, 40)];
    text.borderStyle = UITextBorderStyleRoundedRect;
    [self.view addSubview:text];

    UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    btn.frame = CGRectMake(10, 110, 60, 30);
    [btn setTitle:@"返回" forState:UIControlStateNormal];
    [btn addTarget:self action:@selector(btnClick) 
                    forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btn];
}
- (void)btnClick
{
self.backValue(self.text.text);//调?block?法
[self.navigationController popViewControllerAnimated:YES];
}
@end


block传值的思路:

1,A类要传值,即建立block属性 void (^backValue)(NSString *strValue);然后实现它:self.backValue(要传的值)

2,B类要得到A的传值  即实现A的的属性。

    AViewController *aVC = [[AViewController alloc] init];
    //通过block传值,城市切换
    aVC.backValue = ^(NSString *strValue) {//设置SecondViewController?边的block属性,这是本程序的关键
        self.cityName = strValue;
    };

3,分析blcok属性的写法

返回值-名称-参数

返回值-名称-等号

@property (nonatomic, copy) void      (^backValue)  (NSString *strValue);
@property (nonatomic, copy) NSString  *name;        =





iOS block使用

标签:

原文地址:http://my.oschina.net/u/2346786/blog/490178

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!