0

这似乎很容易,我很尴尬。每次我触发它时,它都停留在“开启”状态。它永远不会通过条件关闭。

-(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];
}
4

1 回答 1

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,则该条件将始终返回。因此,它永远不会执行您的 else 部分。truelightbulb.image

相当于,

lightbulb.image = bulbOff;

if (lightbulb.image) {

附带说明一下,如果您使用@propertyfor lightbulb,请在包括 if 条件在内的所有地方使用相同的内容,使其保持一致。在我的回答中,我已从 更改lightbulb.imageself.lightbulb.image

于 2012-11-20T23:44:04.217 回答