J'essaie de charger un paramètre utilisateur dans un contrôle segmenté. NSUserDefault lit correctement et la préférence est correctement traduite dans un index. Toutefois, le contrôle segmenté ne semble pas répondre à la définition de l'index, préférant rester à l'index 0.UISegmentedControl: définir par programme l'index?
Le code clean est compilé avec -Wall -Wextra
et clang
ne signale aucun problème. J'ai aussi couru avec des fuites et des zombies - OK. Et les ASSERTs
ci-dessous ne tirent pas.
Les UISegmentedControl ont été créés en utilisant Interface Builder (il y a 4 total sur la vue). J'ai vérifié les connexions. J'ai essayé d'appeler -loadPreferences
dans -viewDidLoad
, -viewWillAppear
, et -viewDidAppear
.
Y a-t-il des astuces qui me manquent? Devrais-je appeler un needsUpdate
ou une autre méthode pour obtenir les contrôles à repeindre?
Jeff
-(void)loadPreferences
{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
...
int days = [userDefaults integerForKey:kDirtyAfter];
ASSERT(IsValidDirtyDays((DirtyDays)days));
if(!IsValidDirtyDays((DirtyDays)days))
days = (int)DirtyDaysDefault;
int idx;
switch(days)
{
case DirtyDays1: idx = 0; break;
case DirtyDays3: idx = 1; break;
case DirtyDays7: idx = 2; break;
case DirtyDays14: idx = 3; break;
case DirtyDays28: idx = 4; break;
default: idx = 1;
}
// dirtyAfterSegment.selectedSegmentIndex = idx;
[dirtyAfterSegment setSelectedSegmentIndex:idx];
ASSERT(dirtyAfterSegment.selectedSegmentIndex == idx);
}
Merci Kendall. J'ai copié un copier/coller, qui apparaissait dans '-valueChanged'. – jww