インターフェイス ビルダーから UISwitch を取得しました。その時の状態はONです。アプリケーションを実行した後、位置をOFFに変更して別の画面に移動し、もう一度その画面に戻ると、スイッチは以前に設定したOFFではなくONを示します。設定した UISwitch の位置または状態を表示する方法を教えてください。このスイッチ画面に来ると、常にオンと表示されるようになりました。私を助けてください。前もって感謝します。
5 に答える
値を変更するときは、NSUserDefaultに保存します。そのため、その画面に戻ったときに、設定値を確認して、スイッチに設定します。
- (void)saveValue {
NSUserDefaults *preferences = [NSUserDefaults standardUserDefaults];
[preferences setBool:value forKey:@"switchOnOff"];
[preferences synchronize];
}
- (BOOL)readValue {
NSUserDefaults *preferences = [NSUserDefaults standardUserDefaults];
return [preferences boolForKey:@"switchOnOff"];
}
スイッチの状態を変更するときは、値を整数としてNSUserDefaultsに格納し、スイッチが存在するviewControllerのviewDidAppearメソッドに格納します。このようにNSUserDefaultsから値を取得して、スイッチの状態を設定するだけです。
//store value to nsuserdefaulrs
[[NSUserDefaults standardUserDefaults] setBool:switch.on forKey:@"switchStatus"];
//get value from nsuserdefaulrs
[switch setOn:[[NSUserDefaults standardUserDefaults] boolForKey:@"switchStatus"]];
UISwitch用のコンセントがあります。
@property (retain, nonatomic) IBOutlet UISwitch *sswitch;
接続します。
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
if( [[NSUserDefaults standardUserDefaults] boolForKey:@"switch"] )
{
[sswitch setOn:YES]
}
else
{
[sswitch setOn:NO]
}
}
そして、スイッチの状態が変更されるたびに、値をに保存しますNSUserDefaults
値を
1. モデル クラス
2. NSUserDefaults
3. Plist
4. ドキュメント ファイルに保存する必要があります。
最善の方法は Model クラスです。これらのコードは、Stackoverflow で簡単に取得できます。
IB で追加したスイッチの場合は、そこで初期状態を設定するだけです。それ以外の場合は、スイッチを IBOutlet にリンクした後、次のような viewDidLoad を追加できます。
[savePass setOn:NO];
スイッチをオフ状態に設定します。スイッチが IBOutlet 変数にリンクされていることを確認する必要があります。