Проблема с выбором UIPickerView и NSUserDefaults - PullRequest
0 голосов
/ 24 августа 2010

У меня есть UIPickerView с 2 компонентами.Я сохраняю выбор пользователя с помощью NSUserDefaults.Оба компонента имеют текст для сохранения строк.

По какой-то причине он сохраняет только последнюю выбранную строку и применяет ее к другому компоненту, например: если я выберу строку 0 в компоненте 0, а затем выберу строку 1 вкомпонент 1, и попытаться получить к ним доступ снова, он выбирает строку 1 в обоих компонентах вместо строки 0 и строки 1.

Вот мой код сохранения:


- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {


    NSUserDefaults *pickerSelectionDefaults = [NSUserDefaults standardUserDefaults];

    [pickerSelectionDefaults setInteger:row forKey:@"leftComponentSelectionKey"];   
    [pickerSelectionDefaults setInteger:row forKey:@"rightComponentSelectionKey"];

    [pickerSelectionDefaults synchronize];

}

- (void)viewWillAppear:(BOOL)animated {

    NSUserDefaults *pickerSelectionDefaults = [NSUserDefaults standardUserDefaults];
    [enginesPicker selectRow:[pickerSelectionDefaults integerForKey:@"leftComponentSelectionKey"] inComponent:0 animated:YES];

    [enginesPicker selectRow:[pickerSelectionDefaults integerForKey:@"rightComponentSelectionKey"] inComponent:1 animated:YES];

}

Спасибо!

Ответы [ 2 ]

0 голосов
/ 14 сентября 2013

Хотя этот вопрос "решен".Я хотел добавить, что reloadComponent не помог в моем случае.Моя проблема читает то же самое.Но решение, которое помогло, было обойти существующую ошибку Apple UIKit: см. https://stackoverflow.com/a/13391056/2580805 - поэтому я добавляю другое решение "для следующих расстроенных кодеров"

0 голосов
/ 21 сентября 2010

Я собираюсь сделать предположение и сказать, что вам нужно немного больше, чем просто установить значение средства выбора: компонента, и это немного больше:

[enginesPicker reloadComponent:0];
[enginesPicker reloadComponent:1];

Я думаю, вы можететакже используйте:

[enginesPicker reloadAllComponents];

Приветствия!

(PS, если это работает, не забудьте принять и пометить его.) (^ _ ^)

...