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

说明: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 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];

    

}

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

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

// 枚举代替魔法数字,提高代码的可读性

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;

            

    }

 

你可能感兴趣的:(tag)