2015-02-11 40 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