我正在使用此答案中的代码来生成按钮网格。
单击按钮时,我想更改按钮图像。所以我需要做这样的事情:
- (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
是按下的按钮。
使用参数 sender
。 sender
是你对其提交操作的对象。所以。。只需将其投射到UIButton
并更改图像
如果要处理动态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];
}
如果您没有为每个按钮创建 out & action,那么即使通过 isKindofClass 获取子视图和比较也无法解决问题。您必须为每个按钮分配一个标签值,您可以将发件人投射到 UIButton,然后确定标签并根据标签更改图像。如果要更改正在按下的按钮的图像,您可以简单地更改发件人的图像,因为按下的按钮是最新的。
if(((UIButton *)sender).tag==intvalue)
{
((UIButton *)sender) setImage:[UIImage imageNamed:@"Your Image"]];
}
如果必须更改按下按钮的图像只需更改图像,无需if部分和标签。