2010-08-08 1 views
0

У меня есть UIPickerView с двумя компонентами. Я хотел бы сохранить выбор пользователя и применить его в следующий раз, когда pickerView будет показан снова.Проблема UIPickerView и NSUserDefaults

Вот мой код:


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

    NSUserDefaults *pickerViewSelectionDefaults = [NSUserDefaults standardUserDefaults]; 
    [pickerViewSelectionDefaults setInteger:row forKey:@"pickerViewSelectionKey"]; 
    [pickerViewSelectionDefaults synchronize]; 

} 

} 

И ...


- (void)viewWillAppear:(BOOL)animated { 

    NSUserDefaults *pickerViewSelectionDefaults = [NSUserDefaults standardUserDefaults]; 
    [pickerView selectRow:[pickerViewSelectionDefaults integerForKey:@"pickerViewSelectionKey"] inComponent:0 animated:YES]; 

} 

Спасибо!

ответ

0

Я не понимаю, какова ваша настоящая проблема. Ваш код должен работать, учитывая, что вы только спите компонент 0, а не 1. Есть проблема с сохранением строки для двух компонентов в один параметр. Если вы открутите компонент 1 до строки 20, а затем загрузите представление, это скорее всего произойдет, если компонент 0 также не содержит 20 строк.

Пожалуйста, сообщите нам об этом сообщение об ошибке или отметьте что-то неправильное. Также убедитесь, что ваш метод viewWillAppear действительно вызван.

+0

Проблема заключается в том, что даже с этим NSUserDefaults кодом, каждый раз, когда pickerView показано, выбранный индекс в обоих компонентах равен 0. Спасибо за помощь –

+0

Вы уверены, что viewWillAppear даже называют? Также убедитесь, что элементы сборщика были заполнены во время выполнения viewWillAppear. – Merrimack