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ている結果と、 nilでない場合lightbulb.imageに常に返される条件としてチェックしていることです。このため、else 部分は実行されません。truelightbulb.image

それは、

lightbulb.image = bulbOff;

if (lightbulb.image) {

補足として、 @propertyforを使用lightbulbしている場合は、 if 条件を含むすべての場所で同じを使用して一貫性を持たせてください。私の答えでは、私は から に変更しlightbulb.imageましたself.lightbulb.image

于 2012-11-20T23:44:04.217 に答える