2011-07-13 102 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时添加变量的设置。

我将与此合作,看看我如何继续。