Block传值


效果图

ViewController.m

#import "ViewController.h"
#import "ZLViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor=[UIColor redColor];
}
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    ZLViewController*zlController=[[ZLViewController alloc]init];
    //防止循环引用
    __weak typeof(self)weakSelf=self;
    //block的实现
    zlController.myBlock=^(UIColor*color){
    //来回调此块代码时color已经有值。
        weakSelf.view.backgroundColor=color;
    };
    [self presentViewController:zlController animated:YES completion:nil];
}
@end

ZLViewController.h

#import <UIKit/UIKit.h>
typedef void (^ByValueBlock)(UIColor*);
@interface ZLViewController : UIViewController
@property(strong,nonatomic)ByValueBlock myBlock;
@end

ZLViewController.m

#import "ZLViewController.h"
@interface ZLViewController ()
@end
@implementation ZLViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor=[UIColor blueColor];
}
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    UIColor*color=[UIColor grayColor];
    //block的调用(赋值)
    self.myBlock(color);
    [self dismissViewControllerAnimated:YES completion:nil];
}
@end
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容