[英]Why Isn't NSUserDefaults working with my UISwitch
我正在嘗試設置一個默認情況下處於關閉狀態的UISwitch,直到用戶將其打開為止。 但是,默認情況下它現在顯示為ON。
AppDelegate的didFinishLaunching:
NSString *testValue = [[NSUserDefaults standardUserDefaults] stringForKey:@"pinCodeSwitch"];
if (!testValue) {
// since no default values have been set, create them here
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"pinCodeSwitch"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
VC的viewDidAppear:
UISwitch* testSwitch = [[[UISwitch alloc] init] autorelease];
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"pinCodeSwitch"]) {
[testSwitch setOn:NO animated:NO];
}
self.pinCodeSwitch = testSwitch;
UISwitch的值更改時保存BOOL的方法:
- (IBAction)pinCodeSwitchChanged:(id)sender
{
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"pinCodeSwitch"];
BOOL test = [[NSUserDefaults standardUserDefaults] boolForKey:@"pinCodeSwitch"];
}
由於將“ pinCodeSwitch”設置為“ NO”,因此無需設置開關。 它跳過if語句。 更改為:
if (![[NSUserDefaults standardUserDefaults] boolForKey:@"pinCodeSwitch"])
(取消測試),然后開關將關閉。
您可以在“接口構建器”中通過將“ STATE”值設置為OFF來指定此值。 然后使用以下代碼保存開關值:
[YourUiSwitch setOn:NO animated:YES];
[[NSUserDefaults standardUserDefaults]setValue:YourUiSwitch forKey:@"youruiswitch"];
[[NSUserDefaults standardUserDefaults]synchronize];
當視圖加載完成時,它從默認值加載,如下所示:`YourUiSwitch =
[[NSUserDefaults standardUserDefaults]valueForKey:@"youruiswitch"];`
祝你好運!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.