2014-01-09 25 views
1

我在这里疯了。我有一个将复选标记作为图像的按钮。我简化了我的代码到一个简单的点击按钮的用户动作,它应该替换背景图片。但它的形象不会改变。无法更新UIButton图像

- (IBAction)sendResults:(UIButton *)sender 
{ 
    UIImage *image = [UIImage imageNamed:@"unchecked_checkbox"]; 
    if (image){ 
     NSLog(@"image is good"); 
     [self.resultsCheckBox setBackgroundImage:image forState:UIControlStateNormal]; 
    } else { 
     NSLog(@"problem"); 
    } 
} 

这里是控制台输出:image is good

是的,有一个出口的复选框。我已经证实它是正确的。

我甚至试图将图像设置为零,但它仍然没有消失!

有什么想法?谢谢!

+0

如果您的按钮在nib文件中简单创建,您确定自己的self.resultsCheckBox参考已连接吗? – Tirth

+0

嗯,当我看故事板并右键单击按钮时,它会在.m文件中显示对正确UIButton的引用。有另外一种方法可以证明这个链接是正确的吗? – Alex

+0

@ usr55410:检查Bhavesh的答案..并确保您的图像在PNG而不是JPG。 –

回答

2

这是发生,因为你改变你的UIButton

UIImage *image = [UIImage imageNamed:@"checked_checkbox.png"]; 
[btn setImage:image forState:UIControlStateNormal]; 
的图像,这些所有的选项

变化的背景之前

[BTN了setBackgroundImage:[UIImage的imageNamed:@ “unchecked_checkbox.png”] forState:UIControlStateNormal];

您应该一次只更改setBackgroundImage:或setImage:。

的BackgroundImage低于UIButton的

+0

就是这样。另一种说法是我应该使用'setImage'时只使用了'setBackgroundImage'函数。谢谢! – Alex

+0

您不需要更改默认和背景图像。为选定的未选择图像保持单一场景总是更好,要么是默认的背景。第二种方式,总是最好在nib中设置两个状态图像。 – Tirth

0

首先包含图像文件的扩展名(.png,.jpeg)。

UIImage *image = [UIImage imageNamed:@"unchecked_checkbox.png"]; 

然后试图

if (image) 
{ 
    NSLog(@"image is good"); 

    if(self.resultsCheckBox){ 
     [self.resultsCheckBox setBackgroundImage:nil forState:UIControlStateNormal]; 
     [self.resultsCheckBox setBackgroundImage:image forState:UIControlStateNormal]; 
     [self.view bringSubviewToFront:self.resultsCheckBox]; 
    } 
    else{ 
     NSLog(@"self.resultsCheckBox not found"); 
    } 

    } else 
    { 
     NSLog(@"problem"); 
    } 

或尝试

[self.resultsCheckBox setBackgroundImage:image forState:UIControlStateNormal]; 
[self.resultsCheckBox setBackgroundImage:image forState:UIControlStateHighlighted]; 
[self.resultsCheckBox setBackgroundImage:image forState:UIControlStateDisabled]; 
[self.resultsCheckBox setBackgroundImage:image forState:UIControlStateSelected]; 
[self.resultsCheckBox setBackgroundImage:image forState:UIControlStateApplication]; 
[self.resultsCheckBox setBackgroundImage:image forState: UIControlStateReserved]; 
+0

我试过了。不会改变任何东西。 – Alex

+0

请检查我的更新回答.. –

+0

这是一个好主意。不幸的是,我仍然有同样的结果。 – Alex

0

的图像层我有什么做的就是把后面的(透明)的UIButton一个UIImage,是这个形象,我可以改变:
[self.imageView setImage:chosenImage ]。
[self.imageView setNeedsDisplay];

希望它有帮助。