簡體   English   中英

為什么NSUserDefaults無法與UISwitch一起使用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM