我有一个带有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];
}
谢谢!
答案 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 - 所以我正在为“下一个受挫的程序员”添加其他解决方案