2014-01-09 94 views
1

我在這裏瘋了。我有一個將複選標記作爲圖像的按鈕。我簡化了我的代碼到一個簡單的點擊按鈕的用戶動作,它應該替換背景圖片。但它的形象不會改變。無法更新UIButton圖像

- (IBAction)sendResults:(UIButton *)sender 
{ 
    UIImage *image = [UIImage imageNamed:@"unchecked_checkbox"]; 
    if (image){ 
     NSLog(@"image is good"); 
     [self.resultsCheckBox setBackgroundImage:image forState:UIControlStateNormal]; 
    } else { 
     NSLog(@"problem"); 
    } 
} 

這裏是控制檯輸出:image is good

是的,有一個出口的複選框。我已經證實它是正確的。

我甚至試圖將圖像設置爲零,但它仍然沒有消失!

有什麼想法?謝謝!

+0

如果您的按鈕在nib文件中簡單創建,您確定自己的self.resultsCheckBox參考已連接嗎? – Tirth

+0

嗯,當我看故事板並右鍵單擊按鈕時,它會在.m文件中顯示對正確UIButton的引用。有另外一種方法可以證明這個鏈接是正確的嗎? – Alex

+0

@ usr55410:檢查Bhavesh的答案..並確保您的圖像在PNG而不是JPG。 –

回答

2

這是發生,因爲你改變你的UIButton

UIImage *image = [UIImage imageNamed:@"checked_checkbox.png"]; 
[btn setImage:image forState:UIControlStateNormal]; 
的圖像,這些所有的選項

變化的背景之前

[BTN了setBackgroundImage:[UIImage的imageNamed:@ 「unchecked_checkbox.png」] forState:UIControlStateNormal];

您應該一次只更改setBackgroundImage:或setImage:。

的BackgroundImage低於UIButton的

+0

就是這樣。另一種說法是我應該使用'setImage'時只使用了'setBackgroundImage'函數。謝謝! – Alex

+0

您不需要更改默認和背景圖像。爲選定的未選擇圖像保持單一場景總是更好,要麼是默認的背景。第二種方式,總是最好在nib中設置兩個狀態圖像。 – Tirth

0

首先包含圖像文件的擴展名(.png,.jpeg)。

UIImage *image = [UIImage imageNamed:@"unchecked_checkbox.png"]; 

然後試圖

if (image) 
{ 
    NSLog(@"image is good"); 

    if(self.resultsCheckBox){ 
     [self.resultsCheckBox setBackgroundImage:nil forState:UIControlStateNormal]; 
     [self.resultsCheckBox setBackgroundImage:image forState:UIControlStateNormal]; 
     [self.view bringSubviewToFront:self.resultsCheckBox]; 
    } 
    else{ 
     NSLog(@"self.resultsCheckBox not found"); 
    } 

    } else 
    { 
     NSLog(@"problem"); 
    } 

或嘗試

[self.resultsCheckBox setBackgroundImage:image forState:UIControlStateNormal]; 
[self.resultsCheckBox setBackgroundImage:image forState:UIControlStateHighlighted]; 
[self.resultsCheckBox setBackgroundImage:image forState:UIControlStateDisabled]; 
[self.resultsCheckBox setBackgroundImage:image forState:UIControlStateSelected]; 
[self.resultsCheckBox setBackgroundImage:image forState:UIControlStateApplication]; 
[self.resultsCheckBox setBackgroundImage:image forState: UIControlStateReserved]; 
+0

我試過了。不會改變任何東西。 – Alex

+0

請檢查我的更新回答.. –

+0

這是一個好主意。不幸的是,我仍然有同樣的結果。 – Alex

0

的圖像層我有什麼做的就是把後面的(透明)的UIButton一個UIImage,是這個形象,我可以改變:
[self.imageView setImage:chosenImage ]。
[self.imageView setNeedsDisplay];

希望它有幫助。