2012-05-10 24 views
4

我正在使用this answer中的代碼生成一個按鈕網格。如何在動作中找到正確的UIButton對象

單擊按鈕時,我想更改按鈕圖像。所以,我需要做的是這樣的:

- (void)buttonPressed:(id)sender { 
     [toggleButton setImage:[UIImage imageNamed:toggleIsOn @"on.png"] 
     forState:UIControlStateNormal]; 
    }

但我不知道如何切換按鈕分配從UI右側的按鈕。我沒有每個按鈕的插座。任何想法我可以做到這一點?

回答

1

如果要更改已按下同一按鈕,這應該工作:

- (void)buttonPressed:(id)sender { 
    [sender setImage:[UIImage imageNamed:toggleIsOn @"on.png"] forState:UIControlStateNormal]; 
} 

這是因爲sender已經壓制了按鈕。

1

使用自變量sendersender是您執行操作的對象。所以..只是將它轉換爲UIButton和改變圖像

0

如果你還沒有爲那麼每按鈕甚至還讓子視圖,並通過isKindofClass比較不會解決這個問題形成的出口&行動。 您必須爲每個按鈕分配一個標籤值,然後您可以將發件人轉換爲UIButton,然後根據標籤確定標籤並更改圖像。 如果您想更改正在按下的按鈕圖像,可以簡單地更改發件人的圖像,因爲按下的按鈕是最新的。

if(((UIButton *)sender).tag==intvalue) 
{ 
((UIButton *)sender) setImage:[UIImage imageNamed:@"Your Image"]]; 
} 
在按下按鈕的情況下,圖像

已經改變 簡單地改變形象,沒有必要,如果部分和標籤。

+0

這是我需要更改的按鈕。 – networkprofile

1

如果你想處理撥動開關上和關閉動態的UIButton,保持tag財產狀態01和一個重要的參數sender始終表示這是在已採取行動的對象。

- (void)buttonPressed:(id)sender { 
    UIButton* pressedButton=(UIButton *)sender; 
    NSString* imageName=nil; 

     if(pressedButton.tag==0){ 
      [email protected]"on.png"; 
      pressedButton.tag=1; 
     } 
     else{ 
      [email protected]"off.png"; 
      pressButton.tag=0; 
     } 
     [pressedButton setImage:[UIImage imageNamed:imageName] 
     forState:UIControlStateNormal]; 
}
+0

這實際上是我偶然發現的下一個問題。非常感謝! – networkprofile

+0

@歡迎您。 –