摘要:控件功能在上嵌一个控件,从服务器获得,在页面加载后默认显示,然后按,个数增加按,个数减少。在个数小于时,按钮不可用。调用类和类的点击事件的关联,用协议和代理实现。
控件功能:
在View上嵌一个控件,从服务器获得defaultNumber,在页面加载后默认显示,然后按"+",个数增加;按"-",个数减少。在个数小于minNumber时,"-"按钮不可用。控件实现
新建一个类numberSelectView,继承UIView。控件都是在xib文件中使用,需要实现-(id)initWithCoder方法进行初始化。调用类和numberSelectView类的点击事件的关联,用协议和代理实现。代码
代码最直接了
.h文件
#import@class NumberSelectView; @protocol NumberSelectViewDelegate -(void)numberSelectView:(NumberSelectView*)numberSelectView currentNumber:(NSInteger)currentNumber; @ender @interface NumberSelectView : UIView //服务器获得的数字 @property (nonatomic, assign) NSInteger defaultNumber; //选择的最小值 @property (nonatomic, assign) NSInteger minNumber; //当前显示的数字 @property (nonatomic, assign) NSInteger currentNumber; @property (nonatomic, assign) id delegate; @end
.m文件
#import "NumberSelectView.h" @interface NumberSelectView() @property (nonatomic, strong) UILabel *numberLabel; @property (nonatomic, strong) UIButton *cutButton; @end @implementation NumberSelectView -(id)initWithCoder:(NSCoder *)aDecoder { if (self = [super initWithCoder:aDecoder]) { self.backgroundColor = [UIColor clearColor]; [self setView:self.frame]; } return self; } -(void)setView:(CGRect)frame { UIButton* addButton = [UIButton buttonWithType:UIButtonTypeCustom]; addButton.frame = CGRectMake(frame.size.width/2 + 15, 0, frame.size.width/2 - 15, frame.size.height); addButton.titleLabel.font = [UIFont systemFontOfSize:22]; [addButton setTitle:@"+" forState:UIControlStateNormal]; [addButton setBackgroundImage:[UIImage imageWithColor:[UIColor WhiteColor] cornerRadius:5] forState:UIControlStateNormal]; [addButton addTarget:self action:@selector(addNumber:) forControlEvents:UIControlEventTouchUpInside]; [self addSubview:addButton]; _cutButton = [UIButton buttonWithType:UIButtonTypeCustom]; _cutButton.frame = CGRectMake(0, 0, frame.size.width/2 - 15, frame.size.height); _cutButton.titleLabel.font = [UIFont systemFontOfSize:22]; [_cutButton setTitle:@"-" forState:UIControlStateNormal]; [_cutButton setBackgroundImage:[UIImage imageWithColor:[UIColor grayColor] cornerRadius:5] forState:UIControlStateNormal]; [_cutButton addTarget:self action:@selector(cutNumber:) forControlEvents:UIControlEventTouchUpInside]; [self addSubview:_cutButton]; _numberLabel = [[UILabel alloc] initWithFrame:CGRectMake(frame.size.width/2 - 15, 0, 30, frame.size.height)]; _numberLabel.backgroundColor = [UIColor clearColor]; _numberLabel.font = [UIFont systemFontOfSize:14]; _numberLabel.textColor = [UIColor darkGrayColor]; _numberLabel.textAlignment = NSTextAlignmentCenter; _numberLabel.text = @"0"; [self addSubview:_numberLabel]; } -(void)setDefaultNumber:(NSInteger)defaultNumber { _currentNumber = defaultNumber; [_cutButton setEnabled:_currentNumber>_minNumber]; _numberLabel.text = [NSString stringWithFormat:@"%d",defaultNumber]; } -(void)setMinNumber:(NSInteger)minNumber { _minNumber = minNumber; [_cutButton setEnabled:_currentNumber>_minNumber]; } -(void)setCurrentNumber:(NSInteger)currentNumber { _currentNumber = currentNumber; [_cutButton setEnabled:_currentNumber>_minNumber]; _numberLabel.text = [NSString stringWithFormat:@"%d",_currentNumber]; } - (void)addNumber:(UIButton*)addButton { _currentNumber++; _numberLabel.text = [NSString stringWithFormat:@"%d",_currentNumber]; if (_delegate != nil && [_delegate respondsToSelector:@selector(numberSelectView:currentNumber:)]) { [_delegate numberSelectView:self currentNumber:_currentNumber]; } [_cutButton setEnabled:(_currentNumber > _minNumber)]; } - (void)cutNumber:(UIButton*)cutButton { _currentNumber--; _numberLabel.text = [NSString stringWithFormat:@"%d",_currentNumber]; if (_delegate != nil && [_delegate respondsToSelector:@selector(numberSelectView:currentNumber:)]) { [_delegate numberSelectView:self currentNumber:_currentNumber]; } [cutButton setEnabled:!(_minNumber == _currentNumber)]; } @end
在用到该View的类里,在delegate方法里写具体事件。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/15458.html
摘要:复制粘贴单元格格式和单元格类型本周,让我们一起来学习的复制粘贴单元格格式和单元格类型,希望我的学习笔记能够帮助你们,从零开始学习,并逐步精通。 复制粘贴、单元格格式和单元格类型 本周,让我们一起来学习SpreadJS 的复制粘贴、单元格格式和单元格类型,希望我的学习笔记能够帮助你们,从零开始学习 SpreadJS,并逐步精通。 在此前的学习笔记中,相信大家已经学会并熟练掌握了Sprea...
摘要:一个小项目要使用作为主要展示方式,在地图上展示世界某发展现状。完成了,跟默认的方法其实一模一样自定义因为使用了自适应布局,发现定位坐标也有点难,用普通的方法使用一个展示,时抓坐标,周围偏移个展示。最后使用了自定义方法来用模拟,效果不错。 一个小项目要使用google map作为主要展示方式,在地图上展示世界某发展现状。虽然原来使用过google map,但还是花了两天时间才将主要的地图...
摘要:一封装的组件定义表格高度全屏增加前台分页功能。表格内编辑后,自动选中该行。单元格内数据样式单元格内按钮,可多个。触发组件绑定函数,参数按钮名称,按钮样式,按钮事件标识。单元格是否可点击的判断函数,可进行复杂的函数判断。 vue-bxz-table 一、封装element-ui的table组件: 定义表格高度全屏 增加前台分页功能。 自定义表头,循环输出整体表结构。 表格内编辑(输入框...
摘要:无序列表无序列表是一个项目的列表,此列项目使用粗体圆点典型的小黑圆圈进行标记。可以取值为实心黑圆点空心圆点实心黑方点。有序列表有序列表同样也是一列项目,列表项目使用数字进行标记。自定义列表自定义列表是项目及其注释的组合。 前端基础知识学习记录(二) 1、HTML 输入类型 元素的输入类型: 1、定义供文本输入的单行输入字段; 2、定义密码字段(password字段中的字符会被做掩码处理...
阅读 3875·2021-11-16 11:39
阅读 2635·2021-09-28 09:36
阅读 3696·2021-09-22 15:52
阅读 3426·2021-09-06 15:00
阅读 689·2021-09-02 15:41
阅读 1784·2021-09-02 15:40
阅读 2684·2021-09-02 15:15
阅读 3234·2021-08-17 10:15