Я пытаюсь загрузить пользовательские настройки в сегментированный элемент управления. NSUserDefault читает правильно, и предпочтение правильно переводится в индекс. Однако сегментированный элемент управления, похоже, не реагирует на установку индекса, предпочитая оставаться с индексом 0.
Код clean компилируется с -Wall -Wextra
, а clang
не сообщает о каких-либо проблемах. Я также бегал с утечками и зомби - хорошо. И ASSERTs
ниже не стреляют.
UISegmentedControl был создан с использованием Interface Builder (всего их 4). Я проверил соединения. Я попытался позвонить -loadPreferences
в -viewDidLoad
, -viewWillAppear
и -viewDidAppear
.
Есть какие-то уловки, которые я пропускаю? Должен ли я вызывать needsUpdate
или какой-либо другой метод, чтобы заставить элементы управления перерисовываться?
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);
}