ios - Setting a Row as Selected Based off of NSUserDefaults Value? -


i'm working on view player can choose character play with. have tableview each row represents character. inside each row button player taps select respective character. first time user loads it, 1 character available (first row) , following in viewdidload:

//if not selected character exists set default character if (![[nsuserdefaults standarduserdefaults] integerforkey:@"current character"]) {     [[nsuserdefaults standarduserdefaults] setinteger:0 forkey:@"current character"];     [[nsuserdefaults standarduserdefaults] synchronize]; } nslog(@"value: %d", [[nsuserdefaults standarduserdefaults] integerforkey:@"current character"]); 

by default of buttons in each row hidden revealing lock image behind it. following in cellforrowatindexpath method:

//check unlocked items switch (indexpath.row) {     case 0: {         //always show since available         cell.playerbutton.hidden = no;         break;     }     case 1: {         if([[nsuserdefaults standarduserdefaults] boolforkey:@"item2unlocked"]) {             cell.playerbutton.hidden = no;         } else {             cell.playerbutton.hidden = yes;         }         break;     }     case 2: {         if([[nsuserdefaults standarduserdefaults] boolforkey:@"item3unlocked"]) {             cell.playerbutton.hidden = no;         } else {             cell.playerbutton.hidden = yes;         }         break;     }     case 3: {         if([[nsuserdefaults standarduserdefaults] boolforkey:@"item4unlocked"]) {             cell.playerbutton.hidden = no;         } else {             cell.playerbutton.hidden = yes;         }         break;     }     default:         break; } 

everything working great far. the problem i'm facing figuring out how update button in correct row selected state. i've tried doing following, ends updating more 1 button:

//check unlocked items switch (indexpath.row) {     case 0: {         cell.playerbutton.hidden = no;         if ([[nsuserdefaults standarduserdefaults] integerforkey:@"current character"] == 0) {             cell.playerbutton.selected = yes;         } else {             cell.playerbutton.selected = no;         }         break;     }     case 1: {         if([[nsuserdefaults standarduserdefaults] boolforkey:@"item1unlocked"]) {             cell.playerbutton.hidden = no;             if ([[nsuserdefaults standarduserdefaults] integerforkey:@"current character"] == 1) {                 cell.playerbutton.selected = yes;             } else {                 cell.playerbutton.selected = no;             }         } else {             cell.playerbutton.hidden = yes;         }         break;     }     case 2: {         if([[nsuserdefaults standarduserdefaults] boolforkey:@"item2unlocked"]) {             cell.playerbutton.hidden = no;             if ([[nsuserdefaults standarduserdefaults] integerforkey:@"current character"] == 2) {                 cell.playerbutton.selected = yes;             } else {                 cell.playerbutton.selected = no;             }         } else {             cell.playerbutton.hidden = yes;         }         break;     }     case 3: {         if([[nsuserdefaults standarduserdefaults] boolforkey:@"item3unlocked"]) {             cell.playerbutton.hidden = no;             if ([[nsuserdefaults standarduserdefaults] integerforkey:@"current character"] == 3) {                 cell.playerbutton.selected = yes;             } else {                 cell.playerbutton.selected = no;             }         } else {             cell.playerbutton.hidden = yes;         }         break;     }     default:         break; } 

what's wrong here?

update

doing following, selected state worked:

//check unlocked items switch (indexpath.row) {     case 0: {         cell.playerbutton.hidden = no;         if ([[nsuserdefaults standarduserdefaults] integerforkey:@"current character"] == 0) {             cell.playerbutton.selected = yes;             nslog(@"character selected.");         } else {             cell.playerbutton.selected = no;         }         break;     }     case 1: {         if([[nsuserdefaults standarduserdefaults] boolforkey:@"item1unlocked"]) {             cell.playerbutton.hidden = no;             if ([[nsuserdefaults standarduserdefaults] integerforkey:@"current character"] == 1) {                 cell.playerbutton.selected = yes;                 nslog(@"character b selected.");             } else {                 cell.playerbutton.selected = no;             }         } else {             cell.playerbutton.hidden = yes;         }         break;     }     case 2: {         if([[nsuserdefaults standarduserdefaults] boolforkey:@"item3unlocked"]) {             cell.playerbutton.hidden = no;             if ([[nsuserdefaults standarduserdefaults] integerforkey:@"current character"] == 2) {                 cell.playerbutton.selected = yes;                 nslog(@"character c selected.");             } else {                 cell.playerbutton.selected = no;             }         } else {             cell.playerbutton.hidden = yes;         }         break;     }     case 3: {         if([[nsuserdefaults standarduserdefaults] boolforkey:@"item4unlocked"]) {             cell.playerbutton.hidden = no;             if ([[nsuserdefaults standarduserdefaults] integerforkey:@"current character"] == 3) {                 cell.playerbutton.selected = yes;                 nslog(@"character d selected.");             } else {                 cell.playerbutton.selected = no;             }         } else {             cell.playerbutton.hidden = yes;         }         break;     }     default:         break; } 

however how can disable button or user interaction if button selected?

this should same thing , lot simpler

//check unlocked items    int currentcharacter=[[nsuserdefaults standarduserdefaults] integerforkey:@"current character"];    bool unlocked=no;     if (indexpath.row == 0)    {        unlocked=yes;        // character 0 unlocked    }    else {      unlocked=[nsuserdefaults standarduserdefaults] boolforkey:[nsstring stringwithformat:"%@item%dunlocked",indexpath.row]]    }     if (unlocked)    {       cell.playerbutton.hidden=no;       if (indexpath.row == currentcharacter)       {           cell.playerbutton.selected=yes;           cell.playerbutton.enabled=no;      //cannot select if selected       }       else       {           cell.playerbutton.selected=no;           cell.playerbutton.enabled=yes;       }    }    else    {       cell.playerbutton.hidden=yes;    } 

Comments

Popular posts from this blog

apache - Remove .php and add trailing slash in url using htaccess not loading css -

javascript - jQuery show full size image on click -