我正在使用this answer中的代码生成按钮网格。
单击按钮时,我想更改按钮图像。所以我需要做一些事情:
- (void)buttonPressed:(id)sender {
[toggleButton setImage:[UIImage imageNamed:toggleIsOn @"on.png"]
forState:UIControlStateNormal];
}
但我不知道如何从UI中将toggleButton指定给右键。每个按钮都没有插座。我有什么想法可以做到这一点吗?
答案 0 :(得分:1)
如果要更改已按下的相同按钮,这应该有效:
- (void)buttonPressed:(id)sender {
[sender setImage:[UIImage imageNamed:toggleIsOn @"on.png"] forState:UIControlStateNormal];
}
这是因为sender
是按下的按钮。
答案 1 :(得分:0)
使用参数sender
。 sender
是您提交操作的对象。所以..只需将它投射到UIButton
并更改图像
答案 2 :(得分:0)
如果你还没有创建插座&每个Button的动作,然后甚至获取子视图和通过isKindofClass进行比较将无法解决问题。 您必须为每个按钮分配一个标记值,然后您可以将发件人转换为UIButton,然后确定标记并根据标记更改图像。 如果要更改按下按钮的图像,只需更改发送者的图像,因为按下的按钮是最新的。
if(((UIButton *)sender).tag==intvalue)
{
((UIButton *)sender) setImage:[UIImage imageNamed:@"Your Image"]];
}
如果必须更改按下按钮的图像 只需更改图像,不需要零件和标签。
答案 3 :(得分:0)
如果要在动态UIButton上打开和关闭切换开关,请将tag
属性中的状态保持为0
或1
,并且一个重要的事件发送者参数始终指示这是采取行动的对象。
- (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];
}