2011-09-13 35 views
0

我創建了一系列按鈕並將它們添加到視圖中,我希望能夠以某種方式訪問​​這些按鈕並更改其外觀。已創建後更改UIbuttons顏色

這是我試過的兩個版本的代碼,我相信它定位正確的按鈕似乎沒有發生任何背景顏色。

for(UIView *v in [self.view subviews]) { 
     if ([v isKindOfClass:[UIButton class]]) { 
      if (buttonTag == [v tag]) { 
       v.backgroundColor = [UIColor redColor]; 
      } 
     } 
    } 

for (int i = 0; i < [[self.view subviews] count]; i++) { 
     if ([[self.view.subviews objectAtIndex:i] class] == [UIButton class]) { 
      NSLog(@"Tags : %i", [[self.view.subviews objectAtIndex:i] tag]); 
      if (buttonTag == [[self.view.subviews objectAtIndex:i] tag]) { 

       [[self.view.subviews objectAtIndex:i] setBackgroundColor:[UIColor redColor]]; 
      } 
     } 
    } 

感謝。

+0

在你的第一個版本,你可以拿出buttonTag檢查一下,看看它是否有效? – Saran

+0

試過,沒有運氣 –

+0

但我創建的按鈕編程 –

回答

0

我可以說,你的第一個代碼版本適用於我,只要buttonTag的值是正確的。

爲了進行調試,我建議您註釋掉buttonTag比較,並將所有按鈕都變成紅色。

它可能是你的按鈕不在你的UIView層次結構的頂層。它可能嵌入在子視圖中。如果是這樣,你可以把你的循環放入遞歸函數中。

或者,您的UIButton backgroundColor可能會變成紅色,而您看不到它。圓形按鈕的內部將保持白色;只有圓角外的區域會顯示紅色。帶有背景圖片的按鈕也可能包含任何紅色。

0

您可以使用:

  1. 可以設置例如

    如果(myButtton.selected = YES)選定的屬性 { myButton.backgroundColor = [的UIColor redColor]; } 此外,突出顯示的屬性可用作myBUtton.highlighted = YES;

OR

  1. 可以設置背景圖像或背景顏色,如下所示: [myButton的了setBackgroundImage:[UIImage的imagedNamed:strechableImage] forState:UIControlStateTouchUpInside];

    或爲正常狀態爲: [myButton setBackgroundImage:[UIImage imagedNamed:strechableImage] forState:UIControlStateNormal];

+0

那麼事情是,我不是真正選擇按鈕,別的東西被點擊,這將改變按鈕 –

+0

的顏色然後你可以或許用 UITouch * touch = [[event allTouches] anyObject]; if([touch view] == theaTouchesView) –