经验之谈—UIButton传值通过枚举
来源:互联网 发布:北欧游戏 知乎 编辑:程序博客网 时间:2024/06/16 05:25
- 其实在我们开发中,经常会遇到有些朋友写的代码里面,由很多的数字,如果你突然看到了一堆的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 0
- 经验之谈—UIButton传值通过枚举
- 经验之谈
- 经验之谈
- 经验之谈
- 经验之谈
- 经验之谈
- 经验之谈
- 经验之谈
- 经验之谈
- 经验之谈
- UIButton--通过代码创建按钮
- C#通过反射获取枚举值列表
- 【总结】Effective java经验之谈,枚举,注解,方法,通用设计,异常
- 经验之谈—initWithFrame;initWithCoder;awakeFromNib
- 经验之谈—坐标系的转换
- 经验之谈—KVC(forKey,forKeyPath)
- 经验之谈—OAuth授权流程图
- 经验之谈—KVC(forKey,forKeyPath)
- ubuntu安装phpmyadmin注意事项
- 2015新生赛题目
- POJ1321 棋盘问题(dfs)
- 界面设计-滚动界面
- json时间转正常时间
- 经验之谈—UIButton传值通过枚举
- iOS判断网络是否连接
- 解决 “python + opencv” 不能读取视频的问题
- ajaxfileupload的兼容IE9、IE10和中文乱码问题
- android studio logcat 包名显示问号
- python02-函数及高级特性
- Myeclipse10.0版本部署按钮失效
- iOS实现图片高斯模糊
- 整理 response 返回文件格式