使用后退按钮时,UISwitch移至OFF状态

时间:2013-08-15 08:47:22

标签: iphone ios

我有main window,其中我使用buttonnavigation controller一起使用的设置view controller。我有一个UISwitch,我保留了UISwitch。我的[[NSUserDefaults standardUserDefaults] setBool:startTrackingButton.on forKey:@"switchValue"]; [[NSUserDefaults standardUserDefaults] synchronize]; 功能很好,但当我返回时,开关会自动转为“关闭”。

我尝试过使用这些,

NSUserDefaults

但是存在同样的问题。由于我只有一个视图控制器,我无法检索{{1}}。

任何建议?

2 个答案:

答案 0 :(得分:1)

“由于我只有一个视图控制器,我无法检索NSUserDefaults。”

您可以在viewDIdLoad中检索用户默认值以读取该视图中的切换位置

因此,如果您只有一个viewController

  1. 保存到NSSsuserDefaults正在进行
  2. 在viewDidLoad中读取开关状态以检索开关的位置
  3. 在开关操作方法中保存开关状态

     if (sender == _switch) {
        BOOL mySwitchValue = [ sender isOn ];
        NSString *tmpString = mySwitchValue ? @"1" : @"-1" ;
        NSUserDefaults  *myNSUD = [NSUserDefaults standardUserDefaults];
        [ myNSUD setObject:tmpString forKey: @"mySwitchValueKey" ];
        [ myNSUD synchronize ];
    
    
        //save a key to read switch state in another view if required
        NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
        [userDefaults setBool:self.barCodeSwitch.on forKey:@"switch1"];
        [userDefaults synchronize];
    
      }
    
    
    }
    

    在viewDidLoad中读取已保存的开关位置

    NSUserDefaults  *myNSUD = [NSUserDefaults standardUserDefaults];
        NSString *tmpString =  [ myNSUD stringForKey: @"mySwitchValueKey"];
        BOOL mySwitchValue = NO;  // or DEFAULT_VALUE on/off
        if (tmpString != nil) {
            mySwitchValue = ( [ tmpString intValue ] == 1 );
        }
        [_autocompleteSwitch setOn: mySwitchValue];
    

答案 1 :(得分:1)

设置视图时,无论是在init方法还是在viewDidLoad中,都可以这样做。

[startTrackingButton setOn:[[NSUserDefaults standardUserDefaults] boolForKey:@"switchValue"]]

然后每次切换时切换保存开关状态

[[NSUserDefaults standardUserDefaults] setBool:startTrackingButton.on forKey:@"switchValue"];
[[NSUserDefaults standardUserDefaults] synchronize];