1

私は UISegmentedControl を 2 つのセクションで使用しています。1 つ目は [パスワードを記憶しない] で、2 つ目は [パスワードを記憶する] です。ユーザーが [パスワードを記憶する] を選択した場合は、NSUserDefaults を使用してこれを記憶します。NSUserDefaults が YES の場合、起動時に [パスワードを記憶する] を選択するにはどうすればよいですか?

if ([[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"Remember password"] == YES)
{

    //Make the second segment (segment 1 as it would be called, since first is segment 0) selected
}
4

2 に答える 2

3

ブール設定を扱うときは、セグメント化されたコントロールの代わりにUISwitchを使用することをお勧めします。スイッチは、パスワードの記憶をアクティブまたは非アクティブにします。

使用する値を取り戻すには、値を設定する方法が正しいです。

[[NSUserDefaults standardUserDefaults] boolForKey:@"Remember password"];

したがって、UISwitchを使用する場合は、次のことができます。

switch.on = [[NSUserDefaults standardUserDefaults] boolForKey:@"Remember password"];

UISegmentedControlを使用する場合は、少し長くなりますが、同じように簡単です。

if ([[NSUserDefaults standardUserDefaults] boolForKey:@"Remember password"]) {
        segmentedControl.selectedSegmentIndex = 1;
    }
    else{
        segmentedControl.selectedSegmentIndex = 0;
    }

ブール設定を処理する場合、UISwitchはユーザーにとってより感覚的なものになることを覚えておいてください。

アップデート:

スイッチを使用して値を設定するには、次のようにします。

[[NSUserDefaults standardUserDefaults] setBool:switch.on forKey:@"Remember password"];

UISegmentedControlを使用するよりもはるかに簡単です。

于 2011-07-12T19:14:30.263 に答える
3

viewDidLoad内でselectedSegmentIndexを設定するのと同じくらい簡単で、セグメントがnilでないことを確認できます。

-(void)viewDidLoad
{
    [super viewDidLoad];

    if([[NSUserDefaults standardUserDefaults] boolForKey:@"Remember Password"])
    {
        segment.selectedSegmentIndex = 1;
    }
    else
    {
        segment.selectedSegmentIndex = 0;
    }
}

また、aを使用して、値を直接保存された値にUISwitch設定してみませんか?on

于 2011-07-12T19:15:15.730 に答える