2013-06-21 69 views
0

您好我想獲取的圖像來改變一個方法調用,如果該方法被調用原始圖像回來來回換UIImages

-(void)change 
{ 
if ((player.image = [UIImage imageNamed:@"first.png"])) 
{ 
player.image = [UIImage imageNamed:@"second.png"])); 
} 
else 
{ 
player.image = [UIImage imageNamed:@"first.png"])); 
} 
} 

該作品改變「first.png」圖像爲「second.png」,但再次調用時不會。

我哪裏錯了?

+0

沒有分號(;)?而所有的')是什麼?沒有辦法代碼編譯。 – rog

+0

我在那裏的代碼輸入錯誤 –

+0

如果你需要幫助的代碼不工作,然後張貼實際的代碼。細節很重要。 – rmaddy

回答

2

正如Michael Dautermann所指出的那樣,您比較兩張UIImages的方式是錯誤的。難道你不能只保留一個NSString屬性,告訴你你正在顯示的圖像?

-(void)change 
{ 
    if ([self.displayedImageTitle isEqualToString:@"first.png"]){ 
     player.image = [UIImage imageNamed:@"second.png"])); 
     self.displayedImageTitle = @"second.png"; 
    } 
    else{ 
     player.image = [UIImage imageNamed:@"first.png"])); 
     self.displayedImageTitle = @"first.png"; 
    } 
} 
0

在上面的代碼中,你做出了一個無效的假設,即當您進行比較時,「[UIImage imageNamed: @"first.png"]」將始終是相同的UIImage對象。那是不正確的。每當您調用「imageNamed」API時,您可能正在創建一個全新的UIImage對象。

現在,由於UIImage對象不知道文件名或圖片標題什麼,你需要跟蹤哪些正在顯示圖像,然後在該切換

我建議創建具有文件名或標題屬性(你還需要設置),有你的兩個UIImages爲加載到內存中的屬性或實例變量(即一個子類UIImage對象,如果這些不是巨大的內存佔用圖像),然後做你的切換。

+0

請注意'='而不是'=='的使用。你的答案是有效的,但代碼甚至沒有做適當的比較。 – rmaddy