经验之谈—UIButton传值通过枚举

40 篇文章 0 订阅
  • 其实在我们开发中,经常会遇到有些朋友写的代码里面,由很多的数字,如果你突然看到了一堆的1,2,3,4,5,或者switch判断里面,case 1: cae 2: case 3 等等,这些代码往往给人很蒙的感觉。无从下手,其实这就是我们所说的可读性很差的代码。
  • 其实说起可读性的话,那么我们现在也顺便说一下注释的问题(题外话),其实我们发现,很多大公司,写的注释反而很少,为什么,因为他们的代码就是注释,命名很规范,一看就知道什么意思,那么这样相对来说,文字注释,就显得有点多余,所以,平时我们稍微注意一点,就是向大神靠近的方式。但是若我们命名不规范的话,那么还是建议,多写点注释,以便后期的维护等等。
  • 那这次说的枚举的话题,那我们就说一下,我们经常遇到的UIButton传值的问题,比如我们自定义一个工具条的时候,常常需要通过代理或者别的方式去告诉控制器,我们点了这个按钮,控制器你要做出点什么操作,我们就说这个例子吧。

我们先搞一个枚举

typedef enum {
    ZYCustomToolbarButtonTypeCamera, // 拍照
    ZYCustomToolbarButtonTypePicture, // 相册
    ZYCustomToolbarButtonTypeEmotion // 表情
} ZYCustomToolbarButtonType;

写一个代理

@class ZYCustomToolbar;

@protocol ZYCustomToolbarDelegate <NSObject>
@optional
- (void)composeToolbar:(ZYCustomToolbar *)toolbar didClickButton:(ZYCustomToolbarButtonType)buttonType;
@end

@interface ZYCustomToolbar : UIView
@property (nonatomic, weak) id<ZYCustomToolbarDelegate> delegate;

创建按钮

/**
 * 创建一个按钮
 */
- (UIButton *)setupBtn:(NSString *)image highImage:(NSString *)highImage type:(ZYCustomToolbarButtonType)type
{
    UIButton *btn = [[UIButton alloc] init];
    [btn setImage:[UIImage imageNamed:image] forState:UIControlStateNormal];
    [btn setImage:[UIImage imageNamed:highImage] forState:UIControlStateHighlighted];
    [btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
    btn.tag = type;
    [self addSubview:btn];
    return btn;
}

这里顺便说一下,我们一般通过这种方式创建按钮的时候,顺便把创建好的按钮返回去,可能现在用不到,但是后期也许会用得到。

然后我们初始化按钮:

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) { 
        // 初始化按钮
        [self setupBtn:@"compose_camerabutton_background" highImage:@"compose_camerabutton_background_highlighted" type:ZYCustomToolbarButtonTypeCamera];

        [self setupBtn:@"compose_toolbar_picture" highImage:@"compose_toolbar_picture_highlighted" type:ZYCustomToolbarButtonTypePicture];

      [self setupBtn:@"compose_emoticonbutton_background" highImage:@"compose_emoticonbutton_background_highlighted" type:ZYCustomToolbarButtonTypeEmotion];
    }
    return self;
}

点击事件:

- (void)btnClick:(UIButton *)btn
{
    if ([self.delegate respondsToSelector:@selector(composeToolbar:didClickButton:)]) {

        [self.delegate composeToolbar:self didClickButton:btn.tag];
    }
}

然后这样的话,我们外面的控制器 调用起来,就显得非常方便了。有时候,我们宁愿写多点代码,也要让代码的可读性更强

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值