IOS Block传值

1.使用协议在下级像上级传递值得时候比较繁琐,需要定义协议方法,定义属性,调用,在上级里设置代理实现代理方法。

2.使用block 在类前定义需要使用到的block,

#import <UIKit/UIKit.h>

/**

 * 定义一个block  用来把自己传出去 viewController  添加

 */

typedef void (^DialogViewBolock)(UIView *);

/**

 * 定义一个无参数的block  主要为ok、按钮被点击的时候让调用者自己处理

 */

typedef void (^OKBtnBlock )(void);

@interface Dialog : UIView{

}

/**

 * 定义一个属性的block  是为了让按钮点击的时候触发这个block  在按钮点击事件里调用这个block

 */

@property (nonatomic,strong)OKBtnBlock okBtnBlock;

/**

 * 对话框的封装  第一个block是为了把自己传过去  最后一个block是按钮点击的block

 */

-(void)addDialogViewTo:(DialogViewBolock)dialogView withTitle:(NSString *)title withContent:(NSString *)content btnText:(NSString *)btnText okBtn:(OKBtnBlock) myOKBtnBlock;

@end



3.在实现方法里需要传递给上级的时候使用我们定义的block

-(void)addDialogViewTo:(DialogViewBolock)dialogView withTitle:(NSString *)title withContent:(NSString *)content btnText:(NSString *)btnText okBtn:(OKBtnBlock)myOKBtnBlock{

    

    

    UIButton *okBtn=[[[UIButton alloc] initWithFrame:CGRectMake(0, centerViewHeight*2/3, centerViewWidth, centerViewHeight/3)] autorelease];

    [okBtn setTitle:btnText forState:UIControlStateNormal];

    [okBtn addTarget:self action:@selector(okBtn) forControlEvents:UIControlEventTouchUpInside];

    [okBtn setBackgroundColor:[UIColor colorWithRed:0.94 green:0.94 blue:0.94 alpha:1.00]];

    [okBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];

    [self addSubview:okBtn];

    //dialogView自己传过去

    dialogView(self);

    _okBtnBlock=Block_copy(myOKBtnBlock);

}


/**

 * ok按钮被按的时候  调用这个方法  我们调用block  让上级调用的自己实现

 */

-(void)okBtn{

    _okBtnBlock();

}


4.在需要调用这个方法的地方正常调用即可。

 Dialog *dialog=[[Dialog alloc] init];

    [dialog addDialogViewTo:^(UIView * view){

        view.tag=2001;

        [self.view addSubview:view];

    } withTitle:@"对话框" withContent:@"请注意" btnText:@"确定" okBtn:^{

        NSLog(@"Dialog的对话框的去人按钮被处罚了 ");

        UIView *view=[self.view viewWithTag:2001];

        [view removeFromSuperview];

    }];




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值