Выбранный сегмент UISegmentedControl - PullRequest
1 голос
/ 12 июля 2011

Я использую UISegmentedControl с двумя разделами: первый - «Не помню пароль», а второй - «Запомнить пароль».Если они выбирают Запомнить пароль, я использую NSUserDefaults, чтобы запомнить это.При запуске, как я могу выбрать Запомнить пароль, если NSUserDefaults - ДА?

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
}

Ответы [ 2 ]

3 голосов
/ 12 июля 2011

Это так же просто, как установка selectedSegmentIndex внутри viewDidLoad, чтобы убедиться, что сегмент не равен нулю.

-(void)viewDidLoad
{
    [super viewDidLoad];

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

Кроме того, почему бы не использовать UISwitch и установить значение on непосредственно в сохраненное значение?

3 голосов
/ 12 июля 2011

При работе с булевыми настройками я бы рекомендовал использовать переключатель UIS вместо сегментированного элемента управления.Переключатель либо активирует, либо деактивирует запоминающий пароль.

Способ установки правильного значения для возврата значения, которое вы используете:

[[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"];

Itэто намного проще, чем использование UISegmentedControl.

...