为什么我的图像交换不起作用?

时间:2012-11-20 23:37:13

标签: objective-c ios

这看起来很容易,我很尴尬。每次触发它时它都会处于“开启”状态。它永远不会通过条件来关闭。

-(void) lightbulbSwapImages
{
    NSImage *bulbOn = [NSImage imageNamed: @"sidebar_lightbulb_on.png"];
    NSImage *bulbOff = [NSImage imageNamed: @"sidebar_lightbulb_off.png"];
    if (lightbulb.image = bulbOff)
    [self.lightbulb setImage: bulbOn];
    else
    [self.lightbulb setImage: bulbOff];
}

1 个答案:

答案 0 :(得分:1)

使用=更改==

- (void)lightbulbSwapImages
{
    NSImage *bulbOn = [NSImage imageNamed: @"sidebar_lightbulb_on.png"];
    NSImage *bulbOff = [NSImage imageNamed: @"sidebar_lightbulb_off.png"];
    if (self.lightbulb.image == bulbOff)
       [self.lightbulb setImage: bulbOn];
    else
       [self.lightbulb setImage: bulbOff];
}

您的问题背后的原因: 您正在做的是,尝试将bulbOff分配给lightbulb.image,并将您检查的结果作为一个条件,如果true不为零,则该条件将始终返回lightbulb.image。因此,它永远不会执行你的其他部分。

相当于,

lightbulb.image = bulbOff;

if (lightbulb.image) {

在旁注中,如果您对@property使用lightbulb,请使用相同的地方(包括if条件)使其保持一致。在我的回答中,我已从lightbulb.image更改为self.lightbulb.image