NSUserDefaults で UISwitch の状態を保存する方法はありますか?
状態が ON の場合、何らかのアクションを設定したいのですが...
これはできますか?
ありがとう!
NSUserDefaults で UISwitch の状態を保存する方法はありますか?
状態が ON の場合、何らかのアクションを設定したいのですが...
これはできますか?
ありがとう!
hotpaw2の答えは適切であり、大きなセグメント化された制御(2つ以上の状態)でもうまく機能します。しかし、2つの状態だけを保存したい場合は、[setBool:forKey:]
このように使用してみませんか
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setBool:switchState forKey:@"mySwitchValueKey"];
そしてそれを取り出します:
BOOL swichState = [userDefaults boolForKey:@"mySwitchValueKey"];
どのimoは、はるかに単純であり、他のコードがまったくない場合、文字列が逆変換されることはありません。
保存する:
- (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];