当用户按下该按钮时,我想更改UIButton上的图像。所以,我写了
btnthumbnail2 setImage:[UIImage imageNamed:@"leaderboard_ov.png"] forState:UIControlStateNormal];
在那之后我改变了看法。
图像正在改变,但没有显示改变后的图像。我认为控制转到下一个视图,这就是为什么会发生这种情况。但是我想展示一下变化,我该怎么做呢?请帮帮我..
发布于 2009-12-10 21:01:34
我使用的是Interface Builder,其中我向视图添加了一个UIButton
。
IBAction
,并将该按钮连接到该操作。 -(IBAction) toggleUIButtonImage:(id)sender{
if ([sender isSelected]) {
[sender setImage:unselectedImage forState:UIControlStateNormal];
[sender setSelected:NO];
} else {
[sender setImage:selectedImage forState:UIControlStateSelected];
[sender setSelected:YES];
}
}
我认为这是一个相当顺利的解决方案。希望它能帮上忙!
发布于 2012-12-01 09:12:04
这是我正在做的最简单的方法,而且每次都有效。
-(void)buttonTouched:(id)sender
{
UIButton *btn = (UIButton *)sender;
if( [[btn imageForState:UIControlStateNormal] isEqual:[UIImage imageNamed:@"icon-Locked.png"]])
{
[btn setImage:[UIImage imageNamed:@"icon-Unlocked.png"] forState:UIControlStateNormal];
// other statements
}
else
{
[btn setImage:[UIImage imageNamed:@"icon-Locked.png"] forState:UIControlStateNormal];
// other statements
}
}
您可以对其他状态使用其他类似的检查,例如选中、启用、突出显示。
发布于 2009-07-01 23:39:16
这里的代码应该工作得很好,但我猜直到下一次运行事件循环时按钮图像才会发生变化,所以在视图切换之前看不到它。
这是一种技巧,但您可以尝试稍微延迟视图更改,这样按钮就会更新。
因此,不是这样:
[btnthumbnail2 setImage:[UIImage imageNamed:@"leaderboard_ov.png"] forState:UIControlStateNormal];
[self showMyOtherView];
试试这个:
[btnthumbnail2 setImage:[UIImage imageNamed:@"leaderboard_ov.png"] forState:UIControlStateNormal];
[self performSelector:@selector(showMyOtherView) withObject:self afterDelay:0.01];
https://stackoverflow.com/questions/1072698
复制相似问题