按下其他按钮后无法更改uibutton的图像
Posted
技术标签:
【中文标题】按下其他按钮后无法更改uibutton的图像【英文标题】:can't change image of uibutton after pressing other buttons 【发布时间】:2016-01-19 20:16:38 【问题描述】:我有 2 个按钮,即使它们被释放,它们也会与按下的图像保持一致,直到按下另一个按钮,然后图像返回到正常图像我的代码是这样的:
- (IBAction)button1_touch:(UIButton *)sender
[Button2 setImage:[UIImage imageNamed:@"b2Released.png"] forState:UIControlStateNormal];
[Button1 setImage:[UIImage imageNamed:@"b1Pressed.png"] forState:UIControlStateNormal];
- (IBAction)button2_touch:(UIButton *)sender
[Button1 setImage:[UIImage imageNamed:@"b1Released.png"] forState:UIControlStateNormal];
[Button2 setImage:[UIImage imageNamed:@"b2Pressed.png"] forState:UIControlStateNormal];
上面的代码在应用程序启动时工作正常,行为是预期按下两个按钮,图像正确更改,但是当我按下这两个按钮以外的其他按钮时,“Button2”一旦获得“B2Pressed.png”图像,它永远不会返回到其发布的图像,我在 button1_touch 中写了一个 nslog 并按预期打印,并且 Button1 获取其按下的图像,但 Button2 没有获取其发布的图像,就像 UiButton 的方法 setImage 被破坏时我按下了这两个以外的其他按钮,其他按钮独立于这两个,对我来说这种行为完全没有意义,会不会是 xcode 坏了?我正在开发 xcode 7.2
编辑: 仅当该按钮具有分配给它的动作选择器(UIControlEventTouchUpInside)时,当我按下另一个按钮时才会出现问题。
【问题讨论】:
【参考方案1】:您可以为此目的使用 UIButton 的selected
状态:
- (void)viewDidLoad
// ...
// the place where you do buttons setup
[button1 setImage:[UIImage imageNamed:@"b1Released"] forState:UIControlStateNormal];
[button1 setImage:[UIImage imageNamed:@"b1Pressed"] forState:UIControlStateSelected];
[button2 setImage:[UIImage imageNamed:@"b2Released"] forState:UIControlStateNormal];
[button2 setImage:[UIImage imageNamed:@"b2Pressed"] forState:UIControlStateSelected];
- (IBAction)firstButtonTouch:(UIButton *)sender
button1.selected = YES;
button2.selected = NO;
- (IBAction)secondButtonTouch:(UIButton *)sender
button1.selected = NO;
button2.selected = YES;
【讨论】:
以上是关于按下其他按钮后无法更改uibutton的图像的主要内容,如果未能解决你的问题,请参考以下文章
在 Swift 中按下 uibutton 时更改色调图像颜色
按下时更改图像的 UIButton - 但更改图像时效果不佳