1

これは、2 つの UISwitch の値を NSUserDefaults に保存し、デフォルトに保存された値に基づいてロード時にスイッチを設定することになっています。私はこれに何時間も取り組んできましたが、うまくいかないようです。どんな助けでも大歓迎です。

トグルは、設定に使用しているビューにあります。トグルが 2 つしかないので、NSUserDefaults を使用したいと思います。トグルのデフォルトはオフです。ON に切り替えて、その変更を保存して、トグルの値に基づいてユーザー エクスペリエンスを変更できるようにしたいと考えています。次に、ユーザーが設定を再度開いたときに、現在保存されている状態を表示するようにします。

値は保存されていると思いますが、再度設定ビューに入ったときにスイッチに適用されていません。

    - (IBAction)setBeadVibratorBySwitchState:(id)sender
{
    if (setBeadVibrator.selected == YES) {
        NSUserDefaults *beadSettings = [NSUserDefaults standardUserDefaults];
        [beadSettings setBool:NO forKey:@"beadSwitchStatus"];
        [beadSettings synchronize];
    }
    if (setBeadVibrator.selected == NO) {
        NSUserDefaults *beadSettings = [NSUserDefaults standardUserDefaults];
        [beadSettings setBool:YES forKey:@"beadSwitchStatus"];
        [beadSettings synchronize];
    }

    NSLog(@"Bead Executed");
}

- (IBAction)setDecadeVibratorBySwitchState:(id)sender
{
    if (setDecadeVibrator.selected == YES) {
        NSUserDefaults *decadeSettings = [NSUserDefaults standardUserDefaults];
        [decadeSettings setBool:NO forKey:@"decadeSwitchStatus"];
        [decadeSettings synchronize];
    }
    if (setDecadeVibrator.selected == NO){
        NSUserDefaults *decadeSettings = [NSUserDefaults standardUserDefaults];
        [decadeSettings setBool:YES forKey:@"decadeSwitchStatus"];
        [decadeSettings synchronize];
    }

    NSLog(@"Decade Executed");
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    setBeadVibrator.selected = [[NSUserDefaults standardUserDefaults] boolForKey:@"beadSwitchStatus"];
    setDecadeVibrator.selected = [[NSUserDefaults standardUserDefaults] boolForKey:@"decadeSwitchStatus"];

}
4

3 に答える 3

1

UISwitch を使用している場合はon、 の代わりに プロパティを設定する必要がありますselected

setBeadVibrator.on = [[NSUserDefaults standardUserDefaults] boolForKey:@"beadSwitchStatus"];
setDecadeVibrator.on = [[NSUserDefaults standardUserDefaults] boolForKey:@"decadeSwitchStatus"];

UISwitch クラス リファレンスを参照してください。

于 2012-07-30T04:31:03.443 に答える
0

NSLog ステートメントを if ステートメントに入れて、それらが本当に保存されているかどうかを確認することをお勧めします。そうでない場合、UISwitches が UIControlEventValueChanged イベントで適切に構成されていない可能性があります。

Apple docから詳細を読むことができます。これは、 UISwitches の使用に関する非常に詳細なWeb サイトです。

于 2012-07-30T06:12:52.430 に答える