viewDidLoad未按预期运行

时间:2011-10-25 14:49:49

标签: objective-c ios cocoa-touch nslog 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的结果不会改变,图像也不会改变。为什么会这样?

1 个答案:

答案 0 :(得分:3)

将此代码移至viewWillAppear。每次显示视图时都不会调用viewDidLoad。

此链接提供了一个很好的解释。

UIViewController viewDidLoad vs. viewWillAppear: What is the proper division of labor?