这看起来很容易,我很尴尬。每次触发它时它都会处于“开启”状态。它永远不会通过条件来关闭。
-(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];
}
答案 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
。