码迷,mamicode.com
首页 > 其他好文 > 详细

UI控件tag属性和魔法数字的处理

时间:2014-05-23 04:17:23      阅读:265      评论:0      收藏:0      [点我收藏+]

标签:style   class   blog   c   code   java   

说明:tag属性有很大的用处,它就好像每个UI控件的id,当多个按钮指向同一个监听方法时,可以给方法带参数UIButton,然后根据不同的tag值

来判断执行哪个按钮的监听事件;

bubuko.com,布布扣
- (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 10:
            rect.origin.y -= Delat;
            break;
        case 11:
            rect.origin.y += Delat;
            break;
        case 12:
            rect.origin.x -= Delat;
            break;
        case 13:
            rect.origin.x += Delat;
            break;
            
    }
    
    self.targetView.frame = rect;
  
    [UIView commitAnimations];
    
}
bubuko.com,布布扣

魔法数字:上述代码中的tag值10,11,12,13没什么实际意义,只是用来区分不同的button的,直接写死,很不方便其他的程序员阅读;

  解决办法,将这四个值写成一个枚举

bubuko.com,布布扣
// 枚举代替魔法数字,提高代码的可读性
typedef enum{
    
    upMoveTag = 10,
    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;
            
    }
bubuko.com,布布扣

 

UI控件tag属性和魔法数字的处理,布布扣,bubuko.com

UI控件tag属性和魔法数字的处理

标签:style   class   blog   c   code   java   

原文地址:http://www.cnblogs.com/cxbblog/p/3742113.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!