+ (void)showAlertWithType:(NSInteger)type buttonClickedBlock:(void (^)(void))buttonClickedBlock {
UIWindow *delegateWindow = [[[UIApplication sharedApplication] delegate] window];
// 灰色view
UIView *bgView = [[UIView alloc] initWithFrame:CGRectMake(90, 90, 200, 200)];
[delegateWindow addSubview:bgView];
bgView.backgroundColor = [UIColor grayColor];
// 按钮(点击按钮让灰色view变成红色)
UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
[bgView addSubview:button];
button.frame = CGRectMake(30, 30, 90, 40);
[button setTitle:@"点击变红" forState:UIControlStateNormal];
// 怎么实现点击按钮让灰色view变红并且执行block?(不使用RAC)
//button addTarget:<#(nullable id)#> action:<#(nonnull SEL)#> forControlEvents:<#(UIControlEvents)#>
}
这个类方法是弹出一个灰色view,灰色view上有一个按钮,现在我想点击这个按钮后让灰色view的颜色变成红色并且回调block。
问:如果不用RAC,你们会怎么实现?
打算自定义就继承UIView,比如写一个 MyAlertView 继承自 UIView,该类有一个
+ (void)showAlertWithType:(NSInteger)type buttonClickedBlock:(void (^)(void))buttonClickedBlock
方法,有一个button属性,然后 MyAlertView 持有该block,在button点击的时候执行该block。如果你不想新建一个类,那就用分类给button添加一个属性,保存block,点击的时候再执行。