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



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

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

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

但是我不知道如何将切换按钮分配给UI中的右侧按钮。我没有每个按钮的插座。任何想法我该怎么做?

如果您要更改已按下的同一按钮,这应该可以工作:

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

这是因为sender是按下的按钮

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

如果要处理动态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];
}

如果您没有为每个按钮创建 out & action,那么即使通过 isKindofClass 获取子视图和比较也无法解决问题。您必须为每个按钮分配一个标签值,您可以将发件人投射到 UIButton,然后确定标签并根据标签更改图像。如果要更改正在按下的按钮的图像,您可以简单地更改发件人的图像,因为按下的按钮是最新的。

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

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

最新更新