关于block的传值

来源:互联网 发布:欧缇丽淘宝官网是真假 编辑:程序博客网 时间:2024/06/06 03:07
#import <UIKit/UIKit.h>@interface BViewController : UIViewController@property(nonatomic,strong)void (^ returnStr) (NSString *str);- (void)returnStr:(void (^) (NSString *str))str;@end

 

1.首先要更正自己的一个观点,属性为block函数是能够被strong修饰的(自己不知道怎么搞的,一直以为其职能被assign修饰)

2.那就是关于block的传值了,直接代码

在A控制器中 

- (IBAction)tiaoZhuan:(id)sender {    //A控制器中调用B控制器中带有block函数的方法    [self.BVC returnStr:^(NSString *str) {        self.label.text = str;        [self.view setNeedsDisplay];    }];    [self presentViewController:self.BVC animated:YES completion:nil];}

在B控制器中 .h文件

#import <UIKit/UIKit.h>@interface BViewController : UIViewController//这里的block属性需要用strong修饰@property(nonatomic,strong)void (^ returnStr) (NSString *str);- (void)returnStr:(void (^) (NSString *str))str;@end

 .m文件

- (void)viewDidLoad {    [super viewDidLoad];    NSLog(@"B-viewDidLoad");    UIButton *button = [[UIButton alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];    [button setTitle:@"返回" forState:UIControlStateNormal];    [button addTarget:self action:@selector(back:) forControlEvents:UIControlEventTouchUpInside];    [self.view addSubview:button];}- (void)returnStr:(void (^) (NSString *str))str {    self.returnStr = str;    //str(@"我是反回来的");}//返回函数- (void)back:(UIButton *)sender {    self.returnStr(@"我是反回来的");    [self dismissViewControllerAnimated:YES completion:nil];}

 

0 0
原创粉丝点击