2011-05-17 24 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"]; 
} 
相關問題