2010-08-27 67 views

回答

3

hotpaw2的答案是好的,也可以为大分段控制(超过2种状态)工作。但是,如果你只是想保存2个状态,为什么不使用[setBool:forKey:]这样

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

,并把它弄出来:

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

这海事组织,是非常非常简单,没有任何的if else代码在所有,没有字符串转换回

+0

我相信这是我正在寻找...我会尝试...谢谢! – matteodv 2010-08-30 16:37:16

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]; 
+0

我可以使用没有声明的方法吗?我必须将状态保存在控制器中,并且在验证状态并在另一个控制器中执行一些操作后,我该怎么做? – matteodv 2010-08-27 21:47:58

+0

这听起来像一个新的和不同的问题。 – hotpaw2 2010-08-28 04:38:42

+0

@Matthew:我认为这很容易,你可以从另一个视图控制器中的userDefaults中获取状态。看看我的答案为一个更简单的答案,没有方法声明:) – vodkhang 2010-08-30 09:03:49