ios - Picker saves random data to NSUserDefaults -
i've been working on new tips & tricks project game called dofus. in first view user asked pick class out of picker. go next view , pick level , stuff that. problem picker getting wrong class out of picker.
- (nsinteger)numberofcomponentsinpickerview:(uipickerview *)pickerview { return 1; } - (nsinteger)pickerview:(uipickerview *)pickerview numberofrowsincomponent:(nsinteger)component { return [self.classnames count]; } - (nsstring *)pickerview:(uipickerview *)pickerview titleforrow:(nsinteger)row forcomponent:(nsinteger)component { nsuserdefaults *prefs = [nsuserdefaults standarduserdefaults]; nsstring *_myclass = self.classnames[row]; [prefs setobject:_myclass forkey:@"class"]; return self.classnames[row]; } in viewdidload declared classes:
- (void)viewdidload { [super viewdidload]; // additional setup after loading view, typically nib. self.view.backgroundcolor = [uicolor colorwithpatternimage:[uiimage imagenamed:@"background"]]; self.classnames = @[@"cra", @"ecaflip", @"eliotrope", @"eniripsa", @"enutrof", @"feca", @"foggernout", @"iop", @"masqueraider", @"osamodas", @"pandawa", @"rogue", @"sacrier", @"sadida", @"sram", @"xelor"]; } then in next view information (different .m file):
- (void)viewdidload { [super viewdidload]; // view setup here. self.view.backgroundcolor = [uicolor colorwithpatternimage:[uiimage imagenamed:@"background"]]; nsuserdefaults *prefs = [nsuserdefaults standarduserdefaults]; // getting nsstring nsstring *myclass = [prefs stringforkey:@"class"]; _textlabel.text = [nsstring stringwithformat:@"so %@ huh? pretty cool! class. fill out rest ready go!", myclass]; } anyone idea's how happening? in advance!
you setting preferences on picker's datasource call row title, instead of delegate call when row selected. every row loaded view, pickerview:titleforrow:forcomponent: called, @ point set class preference, however, not correspond row selected in picker, corresponds next row displayed.
instead, respond pickerview:didselectrow:incomponent: method, , set preference there (you still need respond other 1 set row titles, don't set preference).
- (nsstring *)pickerview:(uipickerview *)pickerview didselectrow:(nsinteger) row incomponent:(nsinteger) component { nsuserdefaults *prefs = [nsuserdefaults standarduserdefaults]; nsstring *_myclass = self.classnames[row]; [prefs setobject:_myclass forkey:@"class"]; }
Comments
Post a Comment