Objective c 为什么不是';我的图像交换不能工作吗?
这看起来很简单,我很尴尬。每次我触发它,它都会保持在“开”状态。它永远不会通过关闭的条件Objective c 为什么不是';我的图像交换不能工作吗?,objective-c,ios,Objective C,Ios,这看起来很简单,我很尴尬。每次我触发它,它都会保持在“开”状态。它永远不会通过关闭的条件 -(void) lightbulbSwapImages { NSImage *bulbOn = [NSImage imageNamed: @"sidebar_lightbulb_on.png"]; NSImage *bulbOff = [NSImage imageNamed: @"sidebar_lightbulb_off.png"]; if (lightbulb.image = b
-(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];
}
用
=
更改=
- (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
,并且您正在检查的结果作为一个条件,如果lightbulb.image
为零,则该条件将始终返回true
。因此,它将永远不会执行您的else部分
相当于,
lightbulb.image = bulbOff;
if (lightbulb.image) {
另一方面,如果您对灯泡使用
@property
,请在任何地方使用相同的属性(包括if条件),使其一致。在我的回答中,我已经从lightbulb.image
改为self.lightbulb.image
这真的是一个iOS问题吗?iOS没有NSImage
类。它具有UIImage
。您在检查分配值和计算条件的条件时使用了赋值运算符,并且始终为真,因此您将始终具有bulbon image。改为将==用于条件。