iOS block与封装

接触block是在两天前,那时候的我还在为自己封装的View如何传递事件(比如Button的点击事件、手势….)而头疼不已。既然要封装,就应该把控件的事件都封好,我是这样想的。
于是我第一次使用的block,见证了它的强大。

iconView

这个就是我封装的一个View,上面是一个UIImageView做头像,和一个UIImageView做背景,还有一个Label。
主要功能就是点击iconView可以进行修改头像这个工具,功能很简单 没有什么特别的,之所以封装是因为很多地方都要用到这个View。

我给iconView加上点击手势 代码如下:
// 添加点击手势
[ self.iconView addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(changeIconAndName)]];

changeIconAndName这个方法,但是跳装界面可不能封装在View里,因为别的界面的iconView点击跳转的界面也是不一样的。

所以,要告诉外面,让外面去跳装。怎么办呢?这时候block就派上大用场了。

// 通知外部 点击了手势
-(void)changeIconAndName
{
self.tapTargetClickBlock();
}

当当当当~~~~ 对,没有看错,就这么一句代码就实现了。不过前提需要定义一个block作为这个View 的成员变量。
在.h里面:

typedef void(^TapTargetClickBlock)();
@interface HeaderView : UIView
//点击手势触发之后的block
@property (nonatomic ,copy) TapTargetClickBlock tapTargetClickBlock;
@property(strong,nonatomic)UIView *myHeaderView;



@end

这样外面就可以调用这个block了。

外面需要用iconView的地方:

myHeaderView.tapTargetClickBlock = ^{

    NSLog(@"点击了头像");

    [self.navigationController pushViewController:[[MyEditViewController alloc]init] animated:YES];

};

ok了。跳转不同的界面这要在这里面指定就OK了。通过block不超过十行代码就封好了。
button点击事件也是同样的方法。
block真是太强大,❤️上它了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值