我有以下代码
- (IBAction)switchSetting:(UIButton *)sender {
if([sender.currentImage isEqual:[UIImage imageNamed:@"settings_on"]]){
[sender setImage:nil forState:UIControlStateNormal];
//[sender setImage:[UIImage imageNamed:@"settings_off"] forState:UIControlStateHighlighted];
[sender setTintColor:[UIColor clearColor]];
}else{
[sender setImage:[UIImage imageNamed:@"settings_on"] forState:UIControlStateNormal];
//[sender setImage:[UIImage imageNamed:@"settings_on"] forState:UIControlStateSelected];
//[sender setImage:[UIImage imageNamed:@"settings_on"] forState:UIControlStateReserved];
//[sender setImage:[UIImage imageNamed:@"settings_on"] forState:UIControlStateHighlighted];
[sender setTintColor:[UIColor clearColor]];
}
}
所有按钮背景图像都设置为" settings_off"。这样,当我想切换设置时,我将按钮图像设置为" settings_on"或者没有。
问题是当我运行应用程序时,图像设置为" settings_on"工作正常(好吧,一个问题是我需要第一次点击两次才能进行切换,但现在这样做很小)但是没有图像集的按钮永远不会切换。我尝试设置各种状态(选中,突出显示,正常)的图像,当我这样做,然后在从开启切换到关闭(零)之后,它不会切换回来(而不是在被评论时)出)。我输了,任何帮助表示感谢!
编辑:清除其背景图像中的所有按钮,并仅使用"图像"让它运作;即使我仍然不明白为什么我最初的方法不应该起作用。 AFAIK图像视图将覆盖背景视图... 有没有人知道为什么我必须在第一次点击两次才能开关?
答案 0 :(得分:0)
您是否尝试过以下代码?
- (IBAction)switchSetting:(UIButton *)sender {
if([sender backgroundImageForState:UIControlStateNormal] isEqual:[UIImage imageNamed:@"settings_off"] ){
[sender setImage:[UIImage imageNamed:@"settings_on"] forState:UIControlStateNormal];
}else{
[sender setImage:[UIImage imageNamed:@"settings_off"] forState:UIControlStateNormal];
}
答案 1 :(得分:0)
您可以使用sender.currentImage检查UIButton图像:
- (IBAction)switchSetting:(UIButton *)sender {
if ([sender.currentImage isEqual:[UIImage imageNamed:@"settings_off"]])
{
[sender setImage:[UIImage imageNamed:@"settings_on"] forState:UIControlStateNormal];
}
else
{
[sender setImage:[UIImage imageNamed:@"settings_off"] forState:UIControlStateNormal];
}
}
希望这可以帮助您检查按钮当前图像。
答案 2 :(得分:0)
您可以尝试相应地设置按钮上的tag
值,然后您可以使用switch
声明检查条件。