2012-11-20 2 views
0

이것은 매우 쉬운 것처럼 보이지만 난 당혹 스럽네. 이 때마다 나는 "On"상태를 유지합니다. 그것은 조건부를 벗어나지 않습니다. ==왜 내 이미지 스왑이 작동하지 않습니까?

-(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

정말 iOS 관련 질문입니까? iOS에는'NSImage' 클래스가 없습니다. 그것은 UIImage를 가지고 있습니다. –

+0

값을 할당하고 조건을 평가하는 조건을 검사하면서 대입 연산자를 사용했으며 항상 사실을 발견하므로 항상 bulbon 이미지를 갖게됩니다. 대신 조건에 ==를 사용하십시오. – Sandeep

답변

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

이유 : 당신이 bulbOfflightbulb.image에 당신이 항상 true 경우 lightbulb.image을 반환하는 조건으로 확인하는 결과가 nil이 아닌를 할당하려고한다 뭐 . 이로 인해 다른 부분을 실행하지 않습니다.

그것은 동일합니다, 보조 노트에

lightbulb.image = bulbOff; 

if (lightbulb.image) { 

, 당신이 lightbulb에 대한 @property를 사용하는 경우, 경우 조건을 포함하여 모든 곳에서 동일하게 사용하여 일관성을 유지. 내 대답은 lightbulb.image에서 self.lightbulb.image으로 변경되었습니다.

관련 문제