2011-07-13 77 views
1

希望你能幫助我。 我有一個應用程序需要通過設置UISwitch顯示兩個地圖中的一個。 settings.bundle全部設置完畢,我正在嘗試編寫一條If語句來確定開關是打開還是關閉,並顯示正確的圖像。根據NSUserDefaults設置更改加載的圖像

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
BOOL Enabled = [defaults boolForKey:@"zones_preference"]; 

if (Enabled == @"Enabled") { 
    [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"withzones.jpg"]]; 
} 
else { 
    [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"withoutzones.jpg"]]; 
} 

這種構建沒有錯誤,但不會將圖像加載到ScrollView中。任何人都可以告訴我哪裏出錯了?

+0

在if和else中設置斷點或NSLog,並檢查應用程序採用哪個路徑。 – dasdom

回答

1

那麼,您發佈的代碼只會創建一個UIImageView對象,並且什麼也不做。這也是一個泄漏。

有在該行

if (Enabled == @"Enabled") { 

在這裏,你是一個布爾值比較字符串,因此也需要加以糾正,這將自動評估,以虛假的多個錯誤。

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
BOOL enabled = [defaults boolForKey:@"zones_preference"]; 

UIImageView * imageView; 
if (enabled) { 
    imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"withzones.jpg"]]; 
} else { 
    imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"withoutzones.jpg"]]; 
} 

imageView.frame = imageViewFrame; // Where "imageViewFrame" is an appropriate frame. 
[scrollView addSubview:imageView]; 
[imageView release]; 
+0

我繼續解決這個問題,一切正常,但我認爲我在錯誤的地方有if/else。我有一個mainViewController,它完成所有主要工作。 OptionsViewcontroller呈現連接到Settings.bundle的NSUserdefaults。當用戶點擊完成按鈕並保存設置。我需要If/else來判斷他們是否啓用了Withzones,並顯示帶有區域的圖像,或禁用並顯示標準圖像。我將它作爲主視圖中ViewDidLoad的一部分,但可能需要成爲完成操作的一部分。不知道如何影響完成按鈕的主視圖。 – Boyplunder

0

Deepak,這非常有用,謝謝。我一直在使用一個變量,但是我犯的錯誤是我試圖在創建UIImageView時添加變量的設置。

我將與此合作,看看我如何繼續。