如何将第二行UIPickerView保存到NSUserDefaults?

时间:2011-05-17 16:50:12

标签: iphone ios uipickerview nsuserdefaults rows

我有两行的pickerView,我需要将两者的位置保存到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 个答案:

答案 0 :(得分: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];
}

答案 1 :(得分: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"];
}