2011-05-23 46 views
4

我的设置包中有一个切换开关,但它不是第一次工作。当我在设置中再次更改值时,它正在正常工作。设置包中的ToggleSwitch在iPhone中不工作?

即使我使用前值同步:

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 

[userDefaults synchronize]; 

if([userDefaults boolForKey:@"KeyName"]) { 

    //Do Some Work 
} 

什么,我现在要做的?

回答

4

我想这里遇到的是一个相当奇怪的问题,即设置包中的设置只有在用户第一次运行设置应用程序时才加载。

直接从苹果:

对于新安装的应用程序,从 应用程序的设置捆绑 默认优先值不 集,直到设置应用程序 运行。这意味着如果用户在运行 设置之前运行 您的应用程序,则您的设置包中指定的 默认值为 不可用。

欲了解更多信息,请参阅:Apple's Documentation

5

我假设你都面临这个问题,因为你还没有注册的默认值。

[[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys:@"defaultValueFOrKey", @"Key", nil]]; 

在正常实践中,我们将创建为设置的所有键的默认值的plist文件捆绑为此,并将其注册为

[[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Defaults" ofType:@"plist"]]];