 |
 |
|
 |
06-09-2009, 05:42 PM
|
#1 (permalink)
|
|
Registered Member
Join Date: May 2009
Posts: 26
|
Save State of Picker
I am trying to save a picker row so that it displays the same selection the next time a user loads the app.
I'm not getting any warnings or errors, but the changes aren't saving. Any suggestions?
Code:
NSUserDefaults *wheelPrefs = [NSUserDefaults standardUserDefaults];
wheelPicker = [wheelPrefs objectForKey:@"wheelData"];
[wheelPrefs synchronize];
Code:
-(void)applicationDidTerminate {
NSUserDefaults *wheelPrefs = [NSUserDefaults standardUserDefaults];
[wheelPrefs setObject:[NSNumber numberWithInt:[wheelPicker selectedRowInComponent:0]] forKey:@"wheelData"];
}
Cheers
|
|
|
06-09-2009, 05:52 PM
|
#2 (permalink)
|
|
Almost there
Join Date: Dec 2008
Location: Leeds, England
Posts: 629
|
This is what I do
Code:
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
NSUserDefaults * prefs = [NSUserDefaults standardUserDefaults];
[prefs setInteger:row forKey:@"pickerRow"];
}
And then to load it up.
Code:
- (void)viewDidLoad {
[super viewDidLoad];
NSUserDefaults * prefs = [NSUserDefaults standardUserDefaults];
[pckrView selectRow:[prefs integerForKey:@"pickerRow"] inComponent:0 animated:YES];
}
Just make sure all your IB connections are right.
Tom.
|
|
|
06-09-2009, 05:59 PM
|
#3 (permalink)
|
|
Former NeXTStep Developer
Join Date: Mar 2009
Posts: 997
|
Code:
wheelPicker = [wheelPrefs objectForKey:@"wheelData"];
Gets an object from the preferences. You should have used:
Code:
[wheelPrefs setObject: wheelPicker forKey:@"wheelData"];
But that's probably not going to work either, since you don't want to actually try to save the picker. You want to save the value of the picker, more like:
Code:
[wheelPrefs setInteger: [wheelPicker row] forKey:@"pickerRow"];
joe
|
|
|
06-10-2009, 11:04 AM
|
#4 (permalink)
|
|
Registered Member
Join Date: May 2009
Posts: 26
|
Multiple Pickers
Thank you both! This worked beautifully!
BUT, there's always something....
I have multiple pickers (they are stacked so they show and hide) and only the most recent picker change is saving. Any ideas?
Code:
NSUserDefaults * wheelPrefs = [NSUserDefaults standardUserDefaults];
[wheelPicker selectRow:[wheelPrefs integerForKey:@"wheelPickerRow"] inComponent:0 animated:YES];
NSUserDefaults * carPrefs = [NSUserDefaults standardUserDefaults];
[carPicker selectRow:[carPrefs integerForKey:@"carPickerRow"] inComponent:0 animated:YES];
Code:
NSUserDefaults * wheelPrefs = [NSUserDefaults standardUserDefaults];
NSUserDefaults * carPrefs = [NSUserDefaults standardUserDefaults];
Code:
[wheelPrefs setInteger:row forKey:@"wheelPickerRow"];
[carPrefs setInteger:row forKey:@"carPickerRow"];
|
|
|
06-10-2009, 11:26 AM
|
#5 (permalink)
|
|
Former NeXTStep Developer
Join Date: Mar 2009
Posts: 997
|
There's nothing obviously wrong with your code, other than this is redundant:
Code:
NSUserDefaults * wheelPrefs = [NSUserDefaults standardUserDefaults];
NSUserDefaults * carPrefs = [NSUserDefaults standardUserDefaults];
You only need one prefs pointer object, not one for each preference you're retrieving/saving.
From what little you're showing, it looks like you should be saving and restoring the current value for each of those two pickers. Is something else happening?
joe
|
|
|
06-10-2009, 11:45 AM
|
#6 (permalink)
|
|
Registered Member
Join Date: May 2009
Posts: 26
|
Thanks, I have gotten rid of the redundant line. I feel like this line
Code:
[prefs setInteger:row forKey:@"wheelPickerRow"];
needs something like this
Code:
[prefs setInteger:wheelPicker row forKey:@"wheelPickerRow"];
|
|
|
06-10-2009, 11:53 AM
|
#7 (permalink)
|
|
Registered Member
Join Date: May 2009
Posts: 26
|
Quote:
Originally Posted by SimonCowell
Thanks, I have gotten rid of the redundant line. I feel like this line
Code:
[prefs setInteger:row forKey:@"wheelPickerRow"];
needs something like this
Code:
[prefs setInteger:wheelPicker.row forKey:@"wheelPickerRow"];
|
The problem is that the last picker choice is setting the row number for all of the other pickers
|
|
|
06-10-2009, 07:32 PM
|
#8 (permalink)
|
|
Registered Member
Join Date: May 2009
Posts: 26
|
Solution
[prefs setObject:[NSNumber numberWithInt:[wheelPicker selectedRowInComponent:0]] forKey:@"wheelPickerRow"];
|
|
|
06-10-2009, 07:32 PM
|
#9 (permalink)
|
|
Former NeXTStep Developer
Join Date: Mar 2009
Posts: 997
|
Quote:
Originally Posted by SimonCowell
The problem is that the last picker choice is setting the row number for all of the other pickers
|
Are you saving the row number for each picker as the user selects it? Or trying to save them all at the same time? Your code shows the same variable (row) used for each default, so I that would be the expected result.
joe
|
|
|
 |
| Thread Tools |
|
|
| Display Modes |
Linear Mode
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
|
» Advertisements |
» Online Users: 436 |
| 43 members and 393 guests |
| anandahdaa, bensj, bobvanratingen, BrianSlick, CAmaninacan, develsolutions, Eagle11, efreeet, Erle, firearasi, flamingliquid, fredidf, ftm, gandohr, gbaldwin9, georgeburns, goodcode, haza100, hm50, iTrackiGiveaway, Janek2004, JasonR, javaconvert, jojo453, Kalimba, Leopard, mac514, mesohorny, NeoNate, Noise, not_too_shabby, paolo, prathumca, redon, Roi, Rudy, sayer, scatterbrn, scotopia, shad1236, shark4ever, The Blind Bandit |
| Most users ever online was 779, 05-11-2009 at 09:55 AM. |
» Stats |
Members: 24,296
Threads: 39,092
Posts: 171,394
Top Poster: smasher (2,575)
|
| Welcome to our newest member, Issue |
|