2015-02-11 36 views
0

我有三个按钮图像,我想检查它们之间的条件。当我点击按钮1意味着背景图像变成蓝色。同时我点击按钮1将移动到正常状态的白色。另外两个按钮相同。对于该过程,我使用此代码。 [tempBtn setSelected:! tempBtn.selected];如何检查三个按钮的状态

ButtonImageSelected = [UIImage imageNamed:@"lblue.png"]; 
ButtonImage = [UIImage imageNamed:@"l.png"]; 
button1 = [UIButton buttonWithType:UIButtonTypeCustom]; 
button1.frame = CGRectMake(80, 27, 36, 36); 
[button1 setBackgroundImage:ButtonImage forState:UIControlStateNormal]; 

button1.tag = 1; 
[button1 setBackgroundImage:ButtonImageSelected 
        forState:UIControlStateSelected]; 
button1.userInteractionEnabled = YES; 
[button1 addTarget:self 
       action:@selector(button1Selector:) 
    forControlEvents:UIControlEventTouchDown]; 
[cell.contentView addSubview:button1]; 

另外两个按钮相同,按钮1

我的条件是:当按钮1被点击装置按钮3不应该改变。当按钮3被点击意味着按钮1不应该改变。按钮2可以在两种条件中选择。我使用下面的代码来检查条件,但是它的工作不正确。

- (void)select_id:(UIButton *)tempBtn { 
    if (tempBtn.tag == 1) { 
    button3.userInteractionEnabled = NO; 
    [tempBtn setSelected:!tempBtn.selected]; 
    } else if (tempBtn.tag == 3) { 
    button1.userInteractionEnabled = NO; 
    [tempBtn setSelected:!tempBtn.selected]; 
    } 
} 

帮我看看如何检查条件。在上面的方法中。

回答

1

我相信你试图完成的是每按钮更改状态,当你按下它们。一旦你定义了你的按钮,这就是你如何确保他们为每个状态交替图像。

交替图像基础上的按钮按下

-(IBAction)buttonPressed:(id)sender { 
    switch ([sender tag]) { 
     case 1: 
      if ([UIImagePNGRepresentation(button1.imageView.image) isEqualToData:UIImagePNGRepresentation([UIImage imageNamed:@"default1. png"])]) { 
       [button1 setImage:[UIImage imageNamed:@"selected1.png"] forState:UIControlStateNormal]; 
      } else { 
       [button1 setImage:[UIImage imageNamed:@"default1.png"] forState:UIControlStateNormal]; 
      } 
      break; 
     case 2: 
      if ([UIImagePNGRepresentation(button2.imageView.image) isEqualToData:UIImagePNGRepresentation([UIImage imageNamed:@"default2. png"])]) { 
       [button2 setImage:[UIImage imageNamed:@"selected2.png"] forState:UIControlStateNormal]; 
      } else { 
       [button2 setImage:[UIImage imageNamed:@"default2.png"] forState:UIControlStateNormal]; 
      } 
      break; 
     case 3: 
      if ([UIImagePNGRepresentation(button3.imageView.image) isEqualToData:UIImagePNGRepresentation([UIImage imageNamed:@"default3.png"])]) { 
       [button3 setImage:[UIImage imageNamed:@"selected3.png"] forState:UIControlStateNormal]; 
      } else { 
       [button3 setImage:[UIImage imageNamed:@"default3.png"] forState:UIControlStateNormal]; 
      } 
      break; 
     default: 
      break; 
    } 
} 

注:确保您的操作添加到每个按钮,并更改图像


添加的名称对每个按钮的操作

[button1 addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchDown]; 
[button2 addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchDown]; 
[button3 addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchDown]; 

确保你已经完成了以下内容:

  1. 新增动作到每个按钮
  2. 标记的每一个按钮相应
  3. 设置每个按钮的初始图像相匹配的条件
+0

其还没有工作对我来说.. – 2015-02-11 06:57:09

+0

我已经编辑了答案;事实证明,这种情况并没有正确比较图像。它已被更新和修复。确保在运行代码之前遵循所有步骤。 – 2015-02-11 07:31:14

0

试试这个。在此之前,确保标签是正确的每一个按钮

- (void)select_id:(UIButton *)tempBtn { 
    if (tempBtn.tag == 1) { 
    button3.userInteractionEnabled = NO; 
    [tempBtn setSelected:!tempBtn.selected]; 
    } else if (tempBtn.tag == 3) { 
    button1.userInteractionEnabled = NO; 
    [tempBtn setSelected:!tempBtn.selected]; 
    } 
    else{ 
    button1.userInteractionEnabled = YES; 
    button2.userInteractionEnabled = YES; 
    [tempBtn setSelected:!tempBtn.selected]; 


    } 
} 
+0

我试过这个,在这段代码中所有的按钮都变成了blue.its不起作用帮助我bro。 – 2015-02-11 07:03:25

+0

你的问题不是很清楚。你只需要一个蓝色按钮或零蓝色按钮。或者是其他东西。 – sateesh 2015-02-11 07:07:55

+0

改变颜色是正确的,但条件是错误的,当我选择按钮1意味着按钮3不应该改变。但按钮3正在改变。当选择按钮3时意味着按钮1不应该改变。对我来说,当我选择时,所有按钮都会改变。 – 2015-02-11 07:12:49