如何在操作中找到正确的UIButton对象

时间:2012-05-10 12:21:12

标签: iphone objective-c ios uibutton

我正在使用this answer中的代码生成按钮网格。

单击按钮时,我想更改按钮图像。所以我需要做一些事情:

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

但我不知道如何从UI中将toggleButton指定给右键。每个按钮都没有插座。我有什么想法可以做到这一点吗?

4 个答案:

答案 0 :(得分:1)

如果要更改已按下的相同按钮,这应该有效:

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

这是因为sender按下的按钮。

答案 1 :(得分:0)

使用参数sendersender是您提交操作的对象。所以..只需将它投射到UIButton并更改图像

答案 2 :(得分:0)

如果你还没有创建插座&每个Button的动作,然后甚至获取子视图和通过isKindofClass进行比较将无法解决问题。 您必须为每个按钮分配一个标记值,然后您可以将发件人转换为UIButton,然后确定标记并根据标记更改图像。 如果要更改按下按钮的图像,只需更改发送者的图像,因为按下的按钮是最新的。

if(((UIButton *)sender).tag==intvalue)
{
((UIButton *)sender) setImage:[UIImage imageNamed:@"Your Image"]];
}

如果必须更改按下按钮的图像 只需更改图像,不需要零件和标签。

答案 3 :(得分:0)

如果要在动态UIButton上打开和关闭切换开关,请将tag属性中的状态保持为01,并且一个重要的事件发送者参数始终指示这是采取行动的对象。

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

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