2011-05-17 50 views
1

我有两行pickerView,我需要保存NSUserDefaults的位置。我已经成功保存的第一行,此代码:如何将UIPickerView的第二行保存到NSUserDefaults?

- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {  
    NSInteger selectedRow = [thePickerView selectedRowInComponent:0]; 

    [[NSUserDefaults standardUserDefaults] setInteger:selectedRow forKey:@"picker"]; 
} 

而且我不明白如何添加第二个。

有了这个代码,我带回的位置:

-(void)viewWillAppear: (BOOL) animated { 
    NSUserDefaults *pickerViewSelectionDefaults = [NSUserDefaults standardUserDefaults]; 
[picker selectRow:[pickerViewSelectionDefaults integerForKey:@"picker"] inComponent:0 animated:YES]; 
[picker selectRow:[pickerViewSelectionDefaults integerForKey:@"picker"] inComponent:1 animated:YES]; 
} 

回答

2

试试这个:

- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row 
      inComponent:(NSInteger)component {  
    NSInteger selectedRow = [thePickerView selectedRowInComponent:component]; 
    NSString *key = [NSString stringWithFormat:@"picker%d", component]; 

    [[NSUserDefaults standardUserDefaults] setInteger:selectedRow forKey:key]; 
} 

-(void)viewWillAppear: (BOOL) animated { 
    NSUserDefaults *pickerViewSelectionDefaults = [NSUserDefaults standardUserDefaults]; 
    [picker selectRow:[pickerViewSelectionDefaults integerForKey:@"picker0"] 
     inComponent:0 animated:YES]; 
    [picker selectRow:[pickerViewSelectionDefaults integerForKey:@"picker1"] 
     inComponent:1 animated:YES]; 
} 
+0

不工作:(登录甚至可以显示相同的结果,我从不同的行 – 2011-05-17 17:23:49

+0

真的选择?在比你原来的代码是我建议的差异仔细看。需要注意的是在第一个功能,你必须获取然后构造一个键值,该值的值是特定于该组件的,例如picker0。在第二个函数中,这些键被明确地用于检索正确的值。现在,我没有构建或运行此代码,但这一切看起来都非常简单(对我来说),所以如果现在有问题,我没有看到它!:-)你在调试器中通过了这段代码吗? – 2011-05-17 18:26:30

+0

对不起,它工作正常!非常感谢你! – 2011-05-17 19:01:31

0

与单独的键添加他们。

- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent: (NSInteger)component {  
NSInteger selectedRow = [thePickerView selectedRowInComponent:0]; 

[[NSUserDefaults standardUserDefaults] setInteger:selectedRow forKey:@"pickerRow1"]; 
[[NSUserDefaults standardUserDefaults] setInteger:selectedRow forKey:@"pickerRow2"]; 
}