簡體   English   中英

iOS:我為我的uibutton設置了標簽。 如何根據標簽更改特定的按鈕圖像?

[英]iOS: I set my uibuttons with tags. How do I change the specific button image based on its tag?

我有多個按鈕陣列,稱為按鈕。 每個標記。 如何僅基於按鈕的標簽和標簽來更改按鈕上的圖像。 截至目前,它僅更改最后一個按鈕。

    -(void)buttonTapped:(id)sender{

     NSLog (@"%i",[sender tag])];

      [button setImage:[UIImage imageNamed:@"button_change.png"] forState:UIControlStateNormal];
        }

或者:

for (UIButton *btn in button) {
    if(btn.tag == 1)
    {
        // do something
        break; // don't need to run the rest of the loop
    }
}

如果要使用數組(不應將其稱為“按鈕”,請對數組使用復數形式)

或更簡單的方法:

UIButton *btn = (UIButton *)[self.view viewWithTag:1];

但是,一種更簡單的方法是在回調中使用參數(除非那不是您想要的按鈕)。 像這樣:

-(void)buttonTapped:(id)sender
{
     UIButton *tappedBtn = (UIButton *)sender;
     [tappedBtn setImage:[UIImage imageNamed:@"button_change.png"] forState:UIControlStateNormal];
}

如果您只想更改被點擊的按鈕,則應該可以進行以下操作。

   -(void)buttonTapped:(id)sender
   {
     NSLog (@"%i",[sender tag])];
     UIButton *tappedButton = (UIButton *)sender;
     [tappedButton setImage:[UIImage imageNamed:@"button_change.png"] forState:UIControlStateNormal];
   }

如果要更改其他按鈕,則可以使用

[self.view viewWithTag:1000]; //1000 is the tag you assigned

在這種情況下,您實際上不需要使用標簽。 調用IBAction時,發送者參數是指向觸發IBAction的控件的指針。 (您的按鈕。)

因此,您已經有了指向該按鈕的指針。

因此,正如其他人指出的那樣,您的代碼可能如下所示:

-(void)buttonTapped:(UIButton *)sender
{
  [sender setImage:[UIImage imageNamed:@"button_change.png"] forState:UIControlStateNormal];
}

請注意,我將發件人的類型更改為UIButton,因此您不必強制轉換它。 只要將動作僅連接到按鈕,就可以安全地進行操作並使代碼更清晰。

正如另一位發帖人所指出的那樣,擁有一系列稱為“按鈕”的按鈕是不好的。 我在以下代碼中將其重命名為“ buttons”:

如果要使用標簽和按鈕數組來執行此操作,則可以使用如下代碼:

-(void)buttonTapped:(UIButton *)sender
{
  NSUInteger tag = [sender tag];
  UIButton *aButton = buttons[tag];
  [aButton setImage:[UIImage imageNamed:@"button_change.png"] forState:UIControlStateNormal];
}

創建名稱為button_change1.pngbutton_change2.png等的圖像。

和:

-(void) buttonTapped:(UIButton*)sender
{
    NSString* imageName = [NSString stringWithFormat: @"button_change%ld.png", (long)sender.tag];
    [button setImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal];
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM