UIPickerView选择和NSUserDefaults的问题

时间:2010-08-24 06:28:32

标签: uipickerview nsuserdefaults

我有一个带有2个组件的UIPickerView。 我使用NSUserDefaults保存用户选择器选择。 两个组件都有保存行文本。

出于某种原因,它仅保存最后选择的行并将其应用于其他组件,例如: 如果我在组件0中选择第0行然后选择组件1中的第1行,并尝试再次访问它们,则选择两个组件中的第1行而不是第0行和第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 :(得分:0)

我会猜测并说你需要的不仅仅是设置picker:component的值,还有更多的是:

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

我认为你也可以使用:

[enginesPicker reloadAllComponents];

干杯!

(P.S。,如果这有效,请记住接受并标记它。)(^ _ ^)

答案 1 :(得分:0)

虽然这个问题已经“解决”了。我想补充一点,reloadComponent对我的情况没有帮助。我的问题看起来一样。但帮助的解决方案是现有Apple UIKit错误的解决方法:请参阅https://stackoverflow.com/a/13391056/2580805 - 所以我正在为“下一个受挫的程序员”添加其他解决方案