viewDidLoad не запускается, когда ожидалось

В моем viewDidLoad есть следующий код для изменения изображения:

- (void)viewDidLoad
{
    [super viewDidLoad];
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    if ([defaults objectForKey:@"colour"] == nil) {
        [defaults setObject:@"Red" forKey:@"colour"];
        [defaults setInteger:0 forKey:@"colourIndex"];
        [defaults synchronize];
    }


    [background setImage:[UIImage imageNamed:[defaults objectForKey:@"colour"]]];
    NSLog(@"%@", [defaults objectForKey:@"colour"]);
    // Logs "Blue"
}

Когда я открываю обратный вид в симуляторе iPhone, а затем возвращаюсь к исходному виду, результат NSLog не меняется, и изображение не меняется. Почему это происходит?


person gadgetmo    schedule 25.10.2011    source источник


Ответы (1)


Переместите этот код в viewWillAppear. viewDidLoad не вызывается каждый раз при представлении представления.

Эта ссылка дает хорошее объяснение.

UIViewController viewDidLoad и viewWillAppear: как правильно разделить труд?

person tjg184    schedule 25.10.2011