UI控件tag属性和魔法数字的处理
2024-10-18 22:37:26
说明:tag属性有很大的用处,它就好像每个UI控件的id,当多个按钮指向同一个监听方法时,可以给方法带参数UIButton,然后根据不同的tag值
来判断执行哪个按钮的监听事件;
- (IBAction)up:(UIButton *)sender // 该方法有四个btn指向,tag值是下边的,即可根据不同tag值执行相应的代码
{
//upMoveTag的tag是10
//bottomMoveTag:11
//leftMoveTag:12
//rightMoveTag:13 CGRect rect = self.targetView.frame;
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
switch (sender.tag) {
case :
rect.origin.y -= Delat;
break;
case :
rect.origin.y += Delat;
break;
case :
rect.origin.x -= Delat;
break;
case :
rect.origin.x += Delat;
break; } self.targetView.frame = rect; [UIView commitAnimations]; }
魔法数字:上述代码中的tag值10,11,12,13没什么实际意义,只是用来区分不同的button的,直接写死,很不方便其他的程序员阅读;
解决办法,将这四个值写成一个枚举
// 枚举代替魔法数字,提高代码的可读性
typedef enum{ upMoveTag = ,
bottomMoveTag,
leftMoveTag,
rightMoveTag, } moveDirec; // 监听事件中的代码的tag值就不用写死了,还提高可读性
CGRect rect = self.targetView.frame;
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
switch (sender.tag) {
case upMoveTag:
rect.origin.y -= Delat;
break;
case bottomMoveTag:
rect.origin.y += Delat;
break;
case leftMoveTag:
rect.origin.x -= Delat;
break;
case rightMoveTag:
rect.origin.x += Delat;
break; }
最新文章
- LeetCode Remove Element
- Best Meeting Point
- sqlloader导出数据和导入数据
- 各种ORM安装
- ruby 疑难点之—— yield 和 yield self
- Slickflow.NET 开源工作流引擎基础介绍(一) -- 引擎基本服务接口API介绍
- Sqlserver循环嵌套
- the private key for is not installed on this mac
- Android实现点击事件的4种方式
- perl 打开和关闭文件
- 【百度地图API】如何区分地址解析和智能搜索?
- Go学习笔记(一)Let's 干吧
- Java内存管理及对Java对象管理
- Selenium获取当前窗口句柄与切换回原窗口句柄
- Selenium 3----设置元素等待
- CSAPP:信息的表和处理2
- Centos 6.x/7.x yum安装php5.6.X(最新版)
- HDFS常用操作命令
- 【POJ3045】Cow Acrobats(贪心)
- :单件模式:Singleton