如何用用户默认值保存开关状态?

时间:2010-08-27 15:42:01

标签: iphone save state nsuserdefaults uiswitch

是否存在使用NSUserDefaults存储UISwitch状态的方法?
如果状态为ON,我想设置一些动作...

我可以这样做吗? 谢谢!

2 个答案:

答案 0 :(得分:3)

hotpaw2的答案很好,也适用于大型分段控制(超过2个州)。但是,如果您只想存储2个州,为什么不直接使用[setBool:forKey:]

    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
   [userDefaults setBool:switchState forKey:@"mySwitchValueKey"];

然后把它拿出来:

   BOOL swichState = [userDefaults boolForKey:@"mySwitchValueKey"];

哪个imo,更简单,没有其他代码,没有字符串转换回来和

答案 1 :(得分:1)

保存:

- (void)mySwitchAction:(id)sender
{
  if (sender == mySwitch) {
    BOOL mySwitchValue = [ sender isOn ];
    NSString *tmpString = mySwitchValue ? @"1" : @"-1" ;
    NSUserDefaults  *myNSUD = [NSUserDefaults standardUserDefaults];
    [ myNSUD setObject:tmpString forKey: @"mySwitchValueKey" ];
    [ myNSUD synchronize ];
    // do other stuff/actions
  }
}

从已保存状态初始化:

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