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

Popular posts from this blog

java - Spring Data JPA: Why findOne(id) executing delete query internally? -

python - Mongodb How to add addtional information when aggregating? -

java - Incorrect order of records in M-M relationship in hibernate -