4

我正在使用此答案中的代码来生成按钮网格。

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

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

但我不知道如何从 UI 中将 toggleButton 分配给右键。我没有每个按钮的插座。任何想法我怎么能做到这一点?

4

4 回答 4

1

如果您要更改已按下的相同按钮,则应该可以:

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

这是因为sender是已按下的按钮。

于 2012-05-10T12:25:37.143 回答
0

使用论据sendersender是您对其执行操作的对象。所以..只需将其转换为UIButton并更改图像

于 2012-05-10T12:25:42.667 回答
0

如果您没有为每个按钮创建出口和操作,那么即使通过 isKindofClass 获取子视图并进行比较也无法解决问题。您必须为每个按钮分配一个标签值,您可以将发送者转换为 UIButton,然后确定标签并根据标签更改图像。如果您想更改被按下按钮的图像,您可以简单地更改发送者的图像,因为按下的按钮是最新的。

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

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

于 2012-05-10T12:36:29.030 回答
0

如果您想在动态 UIButton 上处理切换开关的打开和关闭,请将tag属性中的状态保持为0or 1,并且一件重要的事情 sender 参数始终指示这是已对其执行操作的对象。

- (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];
}
于 2012-05-10T12:44:14.683 回答